C#+ GDI + BitBlt [英] C# + GDI + BitBlt
本文介绍了C#+ GDI + BitBlt的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
朋友们,
有一个代码:
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
public class Test : Form
{
public static long SRCINVERT = 0x00660046;
[DllImport("gdi32.dll")]
public static extern bool BitBlt(
IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc,
int nXSrc, int nYSrc, long dwRop);
[DllImport("gdi32.dll", EntryPoint = "SelectObject")]
public static extern IntPtr SelectObject(IntPtr hdc, IntPtr h);
public void TestXOR()
{
Bitmap test = new Bitmap(100, 100);
Graphics g = Graphics.FromImage(test);
g.DrawLine(Pens.White, new Point(0, 0), new Point(100, 100));
test.Save(@"c:\testBefore.bmp", ImageFormat.Bmp);
IntPtr testHDC = g.GetHdc();
SelectObject(testHDC, test.GetHbitmap());
BitBlt(testHDC, 0, 0, 100, 100, testHDC, 0, 0, SRCINVERT);
g.ReleaseHdc(testHDC);
test.Save(@"c:\testAfter.bmp", ImageFormat.Bmp);
g.Dispose();
}
static void Main(string[] args)
{
Test tst = new Test();
tst.TestXOR();
tst.Dispose();
}
}
推荐答案
此XOR适用于C ++应用,但不适用于c#
This XOR works on C++ app, but not c#
将为正确的解决方案支付50
Will pay 50
;)
这篇关于C#+ GDI + BitBlt的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文