WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 01.03.2003, 15:00   #1
Schetter
Newbie
 
Registriert seit: 21.02.2003
Alter: 50
Beiträge: 6


Standard Bitmaps in VC++ 6

Hallo!

Bin in Sachen VC ein echter Neuling, und auch was das Verwenden des WinAPI angeht. Ich will eigentlich nur ein *.BMP-Datei laden und diese in einem Fenster darstellen - mehr will ich nicht. Die Hilfe ist da etwas seltsam. Was ich bisher geschafft habe ist, dass ich den FileHeader geladen habe (mit dieser speziellen Struktur ("BITMAPFILEHEADER") und den BITMAPINFOHEADER. Was zum Teufel sind jetzt diese RGBQUADs (eigentlich will ich ja eh nur 24-Bit BMPs bearbeiten, ber ein bischen Info wäre hier ganz nett). Den restlichen teil habe ich byte-Weise in den Speicher geschrieben (mit LocalAlloc und Pointer).
Habe also alle Daten vom BMP-File gelesen, aber wie bekomme ich diese Dinger jetzt auf den Bildschirm (also in ein Fenster)?
Habe versucht von einem Fenster mit "GetDC" den DeviceContext zu bekommen, dann mit "CreateCompaibleDC" einen Memory-DC zu erstellen und dann mit "CreateCompatibleBitmap" eine Bitmap-Struktur erstellt.
Diese Struktur weise ich mit "SelectObject" dem MemoryDC zu. Im Fenster mache ich immer wenn eine Paint-Message kommt einen "BitBlt" und kopiere vom MemoryDC in den WindowDC. Nur wie bekomme ich die Informationen, die ich vm BMP-File lade in meine BITMAP-Struktur? ermute irgenwie mit diesen "SetDIBits" oder so, komme aber irgendwie nicht auf einen grünen Zweig. Zwischen "AccessViolation" und schwrzem Viereck ist alles möglich - nur keine Graphik


Schetter
Schetter ist offline   Mit Zitat antworten
Alt 03.03.2003, 13:07   #2
Sonic
Master
 
Registriert seit: 28.03.2000
Alter: 45
Beiträge: 691


Sonic eine Nachricht über ICQ schicken
Standard Besser mit LoadImage!?

Hi!

Leichter und schneller geht es wenn du die API funktion LoadImage benutzt!

HANDLE*LoadImage(******
****HINSTANCE*hinst,
****LPCTSTR*lpszName,
****UINT*uType,
****int*cxDesired,
****int*cyDesired,
****UINT*fuLoad);

hinst ist die Instanz deines Programms.
lpszName ist der komplette Pfad zu deinem bild.
uType ist IMAGE_BITMAP wenn due ein.bmp oder .jpg laden willst
cxDesired und cyDesired setze auf LR_DEFAULTSIZE (damit das Bild in orig. Größe geladen wird)
fuLoad setze auf LR_DEFAULTCOLOR

Zurück bekommst du einen Handle (HBMP) den du mit SelectObject in einen DC selektiern kannst (den du zuerst mit CreatCompatibleDC erstellt hast) und dann kannst du mit BitBlt das Bild in dein Fenster kopieren.

Hoffe das hilft dir weiter. Wenn nicht einfach nachfragen.
____________________________________
__________________
|»»»»»SONIC««««««|
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Sonic ist offline   Mit Zitat antworten
Alt 05.03.2003, 10:56   #3
Schetter
Newbie
 
Registriert seit: 21.02.2003
Alter: 50
Beiträge: 6


Standard Herzlichen Donk

Funkt.... Ja, diese LoadImage - Funktion ist schon was fines, danke ...

lG Schetter
Schetter ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:52 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag