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:

hBitMap Hintergrundfarbe

 
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
braesident



Anmeldungsdatum: 15.04.2008
Beiträge: 189
Wohnort: Berlin

BeitragVerfasst am: 17.03.2016, 15:40    Titel: hBitMap Hintergrundfarbe Antworten mit Zitat

Hi. Kann mir jemand helfen und sagen wie ich die Farbe in der HBitmap ändern kann. Egal was ich mache der Hintergrund ist entweder schwarz oder weiß.
Code:
#include    Once "windows.bi"
#include    Once "win\shellapi.bi"
#include    Once "fbgfx.bi"

screenres 300 , 300 , 32

dim as any ptr   mIcon = imageCreate( 32 , 32 )

'' Fenster handle
dim as HWND     mHwnd
ScreenControl( FB.GET_WINDOW_HANDLE, cast(integer,mHwnd) )
   
'' Icon Laden
dim as Word            nicon = 0
dim as HINSTANCE   hInstance=GetModuleHandle(NULL)
dim as HICON       icon = ExtractAssociatedIcon( hInstance , StrPtr( "E:\FreeBasic\Program\fbide.exe" ) , @nicon )
'dim as ICONINFO iInfo
'GetIconInfo(icon,@iInfo)
'print_console( "x/y " + str(iInfo.xHotSpot) + "/" + str(iInfo.yHotSpot) )

'' BitMap erstellen
dim as HDC      mHdc    = GetDC(mHwnd)
dim as HDC      hdcComp = CreateCompatibleDC(mHdc)
dim as HBITMAP  bitmap  = CreateCompatibleBitmap( mHdc , 32 , 32 )

SelectObject( hdcComp , bitmap )

dim as BITMAPINFO bmi
With bmi.bmiHeader
  .biSize = SizeOf(BITMAPINFOHEADER)
  .biWidth =  32
  .biHeight = -32
  .biPlanes = 1
  .biCompression = BI_RGB
  .biBitCount = 32
End With

rectangle( hdcComp , 0, 0, 32, 32 ) ''scheint weiss zu zeichnen

dim As hbrush mBrush = createSolidBrush(BGRA( 255, 0, 0, 255 )) ''Blauer Pinsel

SelectObject( hdcComp , mBrush )

ExtFloodFill( hdcComp , 5 , 5 , BGR(255,255,255) , FLOODFILLSURFACE ) ''alles weisse soll blau werden
'' Icon in die Bmp zeichnen
DrawIconEx( hdcComp, 0, 0, icon, 32, 32, 0, NULL, DI_NORMAL )

'' fbImage erstellen/befüllen
GetDIBits( hdcComp, bitmap, 0, 32, mIcon + 32, @bmi, DIB_RGB_COLORS)

ReleaseDC( mHwnd , mHdc )

DeleteObject(mBrush)
DestroyIcon(icon)
DeleteDC(hdcComp)
DeleteObject(bitmap)

put( 50 , 50 ), mIcon, PSET

imageDestroy mIcon

getKey

_________________
FBIde: 0.4.6
fbc: FreeBASIC Compiler - Version 1.05.0 (01-31-2016), built for win64 (64bit)
OS: Windows NT 6.2 (build 9200)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 18.03.2016, 02:07    Titel: Antworten mit Zitat

Hallo braesident

Du hast die Farbe für den Pinsel falsch gesetzt. So ist es richtig:

Code:
dim As hbrush mBrush = createSolidBrush(BGRA( 0, 0, 255, 0 )) ''Blauer Pinsel


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
braesident



Anmeldungsdatum: 15.04.2008
Beiträge: 189
Wohnort: Berlin

BeitragVerfasst am: 19.03.2016, 20:39    Titel: Antworten mit Zitat

verwundert hm, seltsames verhalten. Zumindest für mich. peinlich
Das Windows BGR anstelle von RGB nutzt hatte ich ja schon heraus gefunden. Aber das die werte nun in der RGB folge in das BGR-Macro geschrieben werden durchgeknallt , darauf muss man erstmal kommen.

Aber so funktioniert es. Danke grindstone (für die Überstunden zwinkern )
_________________
FBIde: 0.4.6
fbc: FreeBASIC Compiler - Version 1.05.0 (01-31-2016), built for win64 (64bit)
OS: Windows NT 6.2 (build 9200)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 20.03.2016, 02:44    Titel: Antworten mit Zitat

Keine Ursache lächeln

Die Farbdefinition funktioniert übrigens auch mit RGB bzw. RGBA von FB, allerdings auch mit vertauschten Farben (diesmal andersherum). Ich tippe mal auf einen Bug in einer der *.bi - Dateien.

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
Jojo
alter Rang


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

BeitragVerfasst am: 20.03.2016, 15:28    Titel: Antworten mit Zitat

Es ist kein Bug, aber wenn das Farbformat in FB und Windows eben grade andersrum ist, kann man nicht erwarten dass die FB-Makros mit Windows-Puffern funktionierten und umgekehrt. zwinkern
_________________
» 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
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 20.03.2016, 23:26    Titel: Antworten mit Zitat

Gut, für RGBA (von FB) mag das so zutreffen, aber BGRA (für Windows) dürfte doch (ich habe es nicht überprüft) in einer der Win - Headerdateien definiert werden und sollte dann auch genau so funktionieren. Offenbar wird da etwas konvertiert, was nicht konvertiert gehört. Oder -je nach Sichtweise- der Farbwert wird von RGBA(FB) nach RGBA(Win) konvertiert und der Unterscheidung wegen BGRA genannt.

Das ist zwar nur ein Schönheitsfehler, aber trotzdem etwas verwirrend...

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
Jojo
alter Rang


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

BeitragVerfasst am: 21.03.2016, 13:40    Titel: Antworten mit Zitat

Nein, hier liegt ein Misstverständnis vor. Du würdest in C z.B. auch das RGBA-Makro verwenden, aber das, das in den Windows-Headern definiert ist - Das BGRA-Makro würdest du in C verwenden, wenn du aus Windows-Sicht in einen Puffer schreibst, der "verkehrherum" aufgebaut ist. Da allerdings FreeBASIC bereits sein eigenes RGBA-Schlüsselwort hat, wird das eigentlich "richtige" Windows-Makro nicht verwendet. FB-RGBA und Windows-BGRA tun dasselbe. Das liegt daran, dass Windows-RGBA aus Sicht von FB eben BGRA ist und andersrum.
_________________
» 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
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 22.03.2016, 06:25    Titel: Antworten mit Zitat

Oder so! grinsen Auf jeden Fall ist es verwirrend. Kopf schütteln

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
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