Guten Nachmittag.
Ich habe derzeit ein Problem mit der Funktion BitBlt(). Ich habe sie wie auf pinvoke.net beschrieben implementiert. Ich habe den Code trotzdem noch einmal angehängt. Zusätzlich habe ich auch noch die GetDC-Funktion drin, damit ich an den DC der Form komme. Nun rufe ich die Funktion wie folgt auf:
BitBlt + TernaryRasterOperations & GetDC
Auf der Form erscheint jedoch leider nicht das Bild, sondern nur ein schwarzes Rechteck mit der Größe des Bildes. Dies geschieht auch, wenn ich z.B. vorher mit dem Grafikobjekt das Bitmap mit einer Farbe fülle, d.h. an der Datei kann es nicht liegen. Habe mir auch mal die MSDN-Dokumentation durchgelesen und sämtliche TernaryRasterOperations durchprobiert. Leider hat keine Funktioniert.
Ich hoffe, ihr könnt mir dabei helfen
LG
~ides
Ich habe derzeit ein Problem mit der Funktion BitBlt(). Ich habe sie wie auf pinvoke.net beschrieben implementiert. Ich habe den Code trotzdem noch einmal angehängt. Zusätzlich habe ich auch noch die GetDC-Funktion drin, damit ich an den DC der Form komme. Nun rufe ich die Funktion wie folgt auf:
C#-Quellcode
- [DllImport("gdi32.dll", EntryPoint = "BitBlt", SetLastError = true)]
- [return: MarshalAs(UnmanagedType.Bool)]
- static extern bool BitBlt([In] IntPtr hdc, int nXDest, int nYDest, int nWidth, int nHeight, [In] IntPtr hdcSrc, int nXSrc, int nYSrc, TernaryRasterOperations dwRop);
- [DllImport("user32.dll", SetLastError = true)]
- static extern IntPtr GetDC(IntPtr hwnd);
- enum TernaryRasterOperations : uint
- {
- /// <summary>dest = source</summary>
- SRCCOPY = 0x00CC0020,
- /// <summary>dest = source OR dest</summary>
- SRCPAINT = 0x00EE0086,
- /// <summary>dest = source AND dest</summary>
- SRCAND = 0x008800C6,
- /// <summary>dest = source XOR dest</summary>
- SRCINVERT = 0x00660046,
- /// <summary>dest = source AND (NOT dest)</summary>
- SRCERASE = 0x00440328,
- /// <summary>dest = (NOT source)</summary>
- NOTSRCCOPY = 0x00330008,
- /// <summary>dest = (NOT src) AND (NOT dest)</summary>
- NOTSRCERASE = 0x001100A6,
- /// <summary>dest = (source AND pattern)</summary>
- MERGECOPY = 0x00C000CA,
- /// <summary>dest = (NOT source) OR dest</summary>
- MERGEPAINT = 0x00BB0226,
- /// <summary>dest = pattern</summary>
- PATCOPY = 0x00F00021,
- /// <summary>dest = DPSnoo</summary>
- PATPAINT = 0x00FB0A09,
- /// <summary>dest = pattern XOR dest</summary>
- PATINVERT = 0x005A0049,
- /// <summary>dest = (NOT dest)</summary>
- DSTINVERT = 0x00550009,
- /// <summary>dest = BLACK</summary>
- BLACKNESS = 0x00000042,
- /// <summary>dest = WHITE</summary>
- WHITENESS = 0x00FF0062,
- /// <summary>
- /// Capture window as seen on screen. This includes layered windows
- /// such as WPF windows with AllowsTransparency="true"
- /// </summary>
- CAPTUREBLT = 0x40000000
- }
Auf der Form erscheint jedoch leider nicht das Bild, sondern nur ein schwarzes Rechteck mit der Größe des Bildes. Dies geschieht auch, wenn ich z.B. vorher mit dem Grafikobjekt das Bitmap mit einer Farbe fülle, d.h. an der Datei kann es nicht liegen. Habe mir auch mal die MSDN-Dokumentation durchgelesen und sämtliche TernaryRasterOperations durchprobiert. Leider hat keine Funktioniert.
Ich hoffe, ihr könnt mir dabei helfen
LG
~ides