Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Kein Rahmen mit Alpha

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Input



Anmeldungsdatum: 28.07.2014
Beiträge: 59

BeitragVerfasst am: 10.04.2015, 07:57    Titel: Kein Rahmen mit Alpha Antworten mit Zitat

Hallo liebes Forum. lächeln

Ich bin grad an einer Diashow mit Überblendung. Jetzt würde ich gerne den Rahmen wegmachen, doch dann hab ich kein Alpha mehr. Gibt es da eine Möglichkeit beides hinzubekommen?

Vielen Dank. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 10.04.2015, 17:51    Titel: Antworten mit Zitat

Code:
'' &h40 GFX_ALPHA_PRIMITIVES '' Bearbeite auch ALPHA-Werte bei Drawing Primitives wie PSET, LINE, etc.
'' &h08 GFX_NO_FRAME         '' kein Rahmen

screenres 640,480,32, ,&h08 OR &h40

line (000,000)-(639,479),RGBA(255,0,0,30)
line (000,479)-(639,000),RGBA(255,0,0,255)

sleep


geht bei mir
_________________


Zuletzt bearbeitet von Eternal_pain am 11.04.2015, 11:07, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Input



Anmeldungsdatum: 28.07.2014
Beiträge: 59

BeitragVerfasst am: 11.04.2015, 10:39    Titel: Antworten mit Zitat

Vielen Dank; werde es versuchen. zwinkern

Edit: Mit "No Frame", hat es nicht geklappt; das Programm kennt die Variable nicht. Ich hab das auch anfänglich zusammen mit OR versucht. Mit &h... funktioniert es aber einwandfrei.

Hier mal noch der Quellcode für alle, die es interessiert:

Code:

#include "fbgfx.bi"
dim as integer WinBreite,WinHoehe
screeninfo WinBreite,WinHoehe

screenres WinBreite,WinHoehe,32,,&h08 OR &h40
setmouse ,,0
randomize timer
dim as integer n=int(rnd*2)+1,n2
dim as String dateiname=n &".bmp"
dim bild as Any Ptr
dim as Integer alpha2,i,breit,hoch,breite,hoehe
dim as Integer ff=Freefile 

do
if inkey=chr(27) then ImageDestroy bild:end
n2=n

do
n=int(rnd*9)+1
dateiname=n &".bmp"
loop until n<>n2

Open dateiname For Input As #ff
Get #ff,19,breit             
Get #ff,23,hoch               
Close #ff   
           
bild=ImageCreate(breit,hoch) 
Bload dateiname,bild
breite=WinBreite/4
hoehe=0

for i=0 to 17
if inkey=chr(27) then ImageDestroy bild:end
Put (breite+30,hoehe),bild,alpha,alpha2
alpha2+=16
sleep 100
next

n2=n
do
n=int(rnd*9)+1
dateiname=n &".bmp"
loop until n<>n2

Open dateiname For Input As #ff
Get #ff,19,breit             
Get #ff,23,hoch               
Close #ff   
           
bild=ImageCreate(breit,hoch) 
Bload dateiname,bild
breite=WinBreite/4
hoehe=0

for i=0 to 17
if inkey=chr(27) then ImageDestroy bild:end
Put (breite+30,hoehe),bild,alpha,alpha2
alpha2+=16
sleep 100
next

loop


PS: Werde daraus mal noch einen Schoner basteln. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1278
Wohnort: Ruhrpott

BeitragVerfasst am: 11.04.2015, 18:50    Titel: Antworten mit Zitat

Hallo,

die Variable heißt mit vollem Namen "FB.GFX_NO_FRAME" (das gilt entsprechend auch für die übrigen Variablen). Das steht auch -wenn auch etwas verklausuliert, Stichwort "NAMESPACE"- in der Befehlsreferenz.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Input



Anmeldungsdatum: 28.07.2014
Beiträge: 59

BeitragVerfasst am: 11.04.2015, 23:27    Titel: Antworten mit Zitat

OK, das wird's wohl sein. zwinkern

Hier mal noch der Schoner; kann ja vielleicht mal jemand brauchen:

Code:

#include "windows.bi"
#include "fbgfx.bi"
dim shared as String Param
declare sub configurescreensaver
declare sub showscreensaver

if command(1) = "" then
if messagebox(0, "Bildschirmschoner testen?", " ", mb_iconquestion or mb_yesno) = idyes then
showscreensaver
end if
end
end if

param = Mid(Command(1), 2, 1)
select case UCASE(param)
case "S": showscreensaver
case "C": configurescreensaver
end select
end
sub configurescreensaver
messagebox(0, "Es gibt nichts zu konfigurieren! ", " ", mb_iconinformation)
end sub

sub showscreensaver
dim as integer mxalt, myalt, mxneu, myneu
dim as STRING taste
dim as integer WinBreite,WinHoehe
screeninfo WinBreite,WinHoehe

screenres WinBreite,WinHoehe,32,,&h08 OR &h40
setmouse ,,0
randomize timer
dim as integer n=int(rnd*2)+1,n2
dim as String dateiname=n &".bmp"
dim bild as Any Ptr
dim as Integer alpha2,i,breit,hoch,breite,hoehe
dim as Integer ff=Freefile

do
n2=n

do
n=int(rnd*2)+1
dateiname=n &".bmp"
loop until n<>n2

Open dateiname For Input As #ff
Get #ff,19,breit             
Get #ff,23,hoch               
Close #ff   
           
bild=ImageCreate(breit,hoch)
Bload dateiname,bild
breite=WinBreite/4
hoehe=0

for i=0 to 17
Put (breite+30,hoehe),bild,alpha,alpha2
alpha2+=16
sleep 100

getmouse mxneu, myneu
taste=Inkey
IF taste<>"" THEN
SELECT CASE taste
CASE CHR(32): EXIT DO
CASE ELSE: EXIT SUB
END SELECT
END IF
IF mxalt=0 THEN
mxalt=mxneu
myalt=myneu
ELSE
if mxneu<>mxalt or myneu<>myalt then ImageDestroy bild:end
END IF
next

n2=n
do
n=int(rnd*2)+1
dateiname=n &".bmp"
loop until n<>n2

Open dateiname For Input As #ff
Get #ff,19,breit             
Get #ff,23,hoch               
Close #ff   
           
bild=ImageCreate(breit,hoch)
Bload dateiname,bild
breite=WinBreite/4
hoehe=0

for i=0 to 17
Put (breite+30,hoehe),bild,alpha,alpha2
alpha2+=16
sleep 100

getmouse mxneu, myneu
taste=Inkey
IF taste<>"" THEN
SELECT CASE taste
CASE CHR(32): EXIT DO
CASE ELSE: EXIT SUB
END SELECT
END IF
IF mxalt=0 THEN
mxalt=mxneu
myalt=myneu
ELSE
if mxneu<>mxalt or myneu<>myalt then ImageDestroy bild:end
END IF
next

getmouse mxneu, myneu
taste = Inkey
IF taste<>"" THEN
SELECT CASE taste
CASE CHR(32): EXIT DO
CASE ELSE: EXIT SUB
END SELECT
END IF
IF mxalt=0 THEN
mxalt=mxneu
myalt=myneu
ELSE
if mxneu<>mxalt or myneu<>myalt then ImageDestroy bild:end
END IF

LOOP
end sub
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1278
Wohnort: Ruhrpott

BeitragVerfasst am: 12.04.2015, 00:16    Titel: Antworten mit Zitat

Dieser Bildschirmschoner wird nach einigen Minuten wegen Speichermangel abstürzen. Du reservierst bei jedem Bildwechsel neuen Speicher, gibst ihn danach aber nicht wieder frei (dem Pointer auf das Bild einen neuen Wert zuzuweisen, reicht NICHT, um den alten Speicher freizugeben).

Außerdem: Warum machst du in der Do - Schleife zweimal hintereinander exakt dasselbe? Und die Maus- und Tastaturabfrage ist auch unnötig kompliziert. Hier ein (in Ermangelung geeigneter Bilder allerdings ungetesteter) Verbesserungsvorschlag:
Code:
Sub showscreensaver
   Dim As Integer mxalt, myalt, mxneu, myneu
   Dim As String taste
   Dim As Integer WinBreite,WinHoehe
   ScreenInfo WinBreite,WinHoehe

   ScreenRes WinBreite,WinHoehe,32,,&h08 Or &h40
   SetMouse ,,0
   Randomize Timer
   Dim As Integer n=Int(Rnd*2)+1,n2
   Dim As String dateiname=n &".bmp"
   Dim bild As Any Ptr
   Dim As Integer alpha2,i,breit,hoch,breite,hoehe
   Dim As Integer ff=FreeFile

   GetMouse mxalt, myalt
   Do
      n2=n

      Do
         n=Int(Rnd*2)+1
         dateiname=n &".bmp"
      Loop Until n<>n2

      Open dateiname For Input As #ff
      Get #ff,19,breit
      Get #ff,23,hoch
      Close #ff

      bild=ImageCreate(breit,hoch)
      BLoad dateiname,bild
      breite=WinBreite/4
      hoehe=0

      For i=0 To 17
         Put (breite+30,hoehe),bild,Alpha,alpha2
         alpha2+=16
         Sleep 100
         
         Select Case InKey
            Case ""
               'nichts tun, weiter im programm
            Case Chr(32)
               ImageDestroy bild
               Exit Do
            Case Else
               ImageDestroy bild
               Exit Sub
         End Select
         
         GetMouse mxneu, myneu
         If mxneu<>mxalt Or myneu<>myalt Then
            ImageDestroy bild
            End
         End If
      Next
      
      ImageDestroy bild
   
   Loop
End Sub

_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Input



Anmeldungsdatum: 28.07.2014
Beiträge: 59

BeitragVerfasst am: 12.04.2015, 00:58    Titel: Antworten mit Zitat

OK. Vielen Dank!! lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz