C#+ GDI + BitBlt [英] C# + GDI + BitBlt

查看:472
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆