try:[DllImport("gdi32.dll", EntryPoint="SetROP2")]
public static extern int SetROP2 (
IntPtr hdc,
int nDrawMode
);

解决方案 »

  1.   

    谢谢楼上各位,我用DllImport调用SetROP2后调用MoveToEx和LineTo能够正确地画出异或线;
    但我要实现鼠标移动中文本的异或,调用SetROP2后调用TextOut无法得到正确结果,
    于是调用CreateCompatibleDC,CreateCompatibleBitmap,实现BitBlt的异或,
    结果却不能达到目的,不知各位有没有兴趣帮我试一试?下面是部分源代码if(不是第一次)//使用内存DC再异或一次达到恢复的目的
    {
    BitBlt(mHdc,0,0,Width,Height,mHMemDc,0,0,0x00660046);
    }int hBrush = CreateSolidBrush(0);
    unsafe
    {
    RECT rect = new RECT();
    rect.left = 0;
    rect.top = 0;
    rect.right = Width;
    rect.bottom = Height;
    FillRect(mHMemDc,(int)&rect,hBrush);
    }SetTextColor(mHMemDc,0xFFFF00);
    TextOut(mHMemDc,x,y,text,text.Length);BitBlt(mHdc,0,0,Width,Height,mHMemDc,0,0,0x00660046);//新的文本异或