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:

Frage zu Put

 
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
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 08.02.2009, 13:30    Titel: Frage zu Put Antworten mit Zitat

Hallo!
Ich möchte ein Bild mit Transparenz auf dem Bildschirm zeichnen und habe bemerkt, das dass mit Put nicht geht, oder muss ich da noch irgendwelche Attribute setzen? Ich habe deshalb meine eigene Funktion geschrieben. Mit dieser Funktion geht es, aber die ist natürlich langsamer als Put...
Könnt ihr mir vielleicht helfen?
Code:
Declare Function GetPixel(ByVal Buffer As Any Pointer, ByVal X As Integer, ByVal Y As Integer) As UInteger
Declare Sub SetPixel(ByVal Buffer As Any Pointer, ByVal X As Integer, ByVal Y As Integer, ByVal Value As UInteger)
Declare Sub DrawImage(ByVal Buffer As Any Pointer, ByVal X As Integer, ByVal Y As Integer)

Dim Image As Any Pointer

ScreenRes 500, 300, 32, , &H40
Image = ImageCreate(160, 160, RGB(0, 0, 0))
' Hintergrund malen
For x As Integer = 0 To 799
   For y As Integer = 0 To 599
      If x Mod 2 = 0 And y Mod 2 = 0 Then
         PSet(x, y), RGB(255, 255, 255)
      EndIf
   Next
Next
' Transparente Box in das Bild zeichnen
For x As Integer = 20 To 140
   For y As Integer = 20 To 140
      SetPixel(Image, x, y, RGBA(0, 255, 0, 127))
   Next
Next

Line(80, 60)-(405, 70), RGBA(0, 0, 0, 128), BF
Draw String(100, 62), "Eigene Funktion"
Draw String(272, 62), "Put Funktion"
'Bild zeichnen
DrawImage(Image, 80, 80)   'einmal mit der eigenen Funktion
Put(245, 80), Image, PSet   'einmal mit Put

GetKey()
ImageDestroy(Image)

Sub SetPixel(ByVal Buffer As Any Pointer, ByVal X As Integer, ByVal Y As Integer, ByVal Value As UInteger)
   Dim ImageWidth As Integer
   ImageInfo(Buffer, ImageWidth)
   Cast(UInteger Pointer, Buffer)[(Y * ImageWidth) + X + 8] = Value
End Sub
Function GetPixel(ByVal Buffer As Any Pointer, ByVal X As Integer, ByVal Y As Integer) As UInteger
   Dim ImageWidth As Integer
   ImageInfo(Buffer, ImageWidth)
   Return Cast(UInteger Pointer, Buffer)[(X * ImageWidth) + Y + 8]
End Function
Sub DrawImage(ByVal Buffer As Any Pointer, ByVal X As Integer, ByVal Y As Integer)
   Dim ImageWidth As Integer
   Dim ImageHeight As Integer
   ImageInfo(Buffer, ImageWidth, ImageHeight)
   For bx As Integer = 0 To ImageWidth - 1
      For by As Integer = 0 To ImageHeight - 1
         PSet(x + bx, y + by), GetPixel(Buffer, bx, by)
      Next
   Next
End Sub
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
raph ael



Anmeldungsdatum: 12.04.2006
Beiträge: 472

BeitragVerfasst am: 08.02.2009, 14:53    Titel: Antworten mit Zitat

Code:
Put(245, 80), Image, Alpha
oder
Code:
Put(245, 80), Image, Alpha, Transparenzwert

_________________
Zitat:
1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 08.02.2009, 15:49    Titel: Antworten mit Zitat

Ja, das weiß ich auch, aber dann ist ja das gesamte Bild transparent. Ich möchte ja, das nur ein Teil transparent ist.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 08.02.2009, 16:46    Titel: Antworten mit Zitat

ist es nicht...? irrtum, euer gnaden! du hättest es wenigstens mal probieren sollen, denn der erste befehl von raphael erzeugt ein identisches bild!
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
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