Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Bildinhalt verschwindet wenn Fenster verdeckt ist! Wie Inhalt schlagartig wiederherstellen?
sharp
myCSharp.de - Member



Dabei seit:
Beiträge: 92

Themenstarter:

beantworten | zitieren | melden

8o so viele Paramter!

[DllImport("gdi32.dll")] static extern int GetDIBits(IntPtr hdc, IntPtr hbmp, uint uStartScan, uint cScanLines, [Out] byte[] lpvBits, ref BITMAPINFO lpbmi, uint uUsage);
Compiler Error: The type or namespace name 'BITMAPINFO' could not be found (are you missing a using directive or an assembly reference)? Wieso?
Hier steht C# signature, wieso geht der import net out of the box: http://www.pinvoke.net/default.aspx/gdi32.GetDIBits

Und wenns bei mir mit GetDIBits klappen sollte, was muss man dann machen?
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von sharp am .
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo sharp,

BITMAPINFO ist ein Win32-Typ. Der ist in .NET nicht bekannt. Den musst du in .NET selbst nachbauen. Schau mal auf www.pinvoke.net , ob es da vielleicht schon was gibt, was du übernehmen kannst.

Ich würde wie gesagt, Win32 hier eher nicht verwenden.

herbivore
private Nachricht | Beiträge des Benutzers
Klaus L.
myCSharp.de - Member



Dabei seit:
Beiträge: 14
Herkunft: Nahe KA

beantworten | zitieren | melden

Zitat von sharp
8o so viele Paramter!

[DllImport("gdi32.dll")] static extern int GetDIBits(IntPtr hdc, IntPtr hbmp, uint uStartScan, uint cScanLines, [Out] byte[] lpvBits, ref BITMAPINFO lpbmi, uint uUsage);
Compiler Error: The type or namespace name 'BITMAPINFO' could not be found (are you missing a using directive or an assembly reference)? Wieso?
Hier steht C# signature, wieso geht der import net out of the box: http://www.pinvoke.net/default.aspx/gdi32.GetDIBits

Und wenns bei mir mit GetDIBits klappen sollte, was muss man dann machen?

Sorry, hab mich vertippt. Du mußt natürlich SetDiBits nehmen. Mit GetDIBits kannst du den Inhalt einer Bitmap auslesen.

BITMAPINFO bzw. BITMAPINFOHEADER mußt du selbst definieren.
typedef struct tagBITMAPINFO { // bmi 

   BITMAPINFOHEADER bmiHeader; 
   RGBQUAD          bmiColors[1]; 
} BITMAPINFO; 
 
typedef struct tagBITMAPINFOHEADER{ // bmih 

   DWORD  biSize; 
   LONG   biWidth; 
   LONG   biHeight; 
   WORD   biPlanes; 
   WORD   biBitCount 
   DWORD  biCompression; 
   DWORD  biSizeImage; 
   LONG   biXPelsPerMeter; 
   LONG   biYPelsPerMeter; 
   DWORD  biClrUsed; 
   DWORD  biClrImportant; 
} BITMAPINFOHEADER; 
 

das ist aber nicht weiter wild.

Gruß,

Klaus
private Nachricht | Beiträge des Benutzers