早教吧 育儿知识 作业答案 考试题库 百科 知识分享

(C#)使用BitBlt函数绘出来的图都是黑色namespacenbsp;TestGDI{nbsp;nbsp;nbsp;nbsp;publicnbsp;partialnbsp;classnbsp;Form1nbsp;:nbsp;Formnbsp;nbsp;nbsp;nbsp;{nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;[DllImport(“gdi32.dll“)]nbsp;nbsp;nbsp;nb

题目详情
(C#)使用BitBlt函数绘出来的图都是黑色namespacenbsp;TestGDI{nbsp;nbsp;nbsp;nbsp;publicnbsp;partialnbsp;classnbsp;Form1nbsp;:nbsp;Formnbsp;nbsp;nbsp;nbsp;{nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;[DllImport(“gdi32.dll“)]nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;privatenbsp;staticnbsp;externnbsp;boolnbsp;BitBlt(nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;IntPtrnbsp;hdcDest,nbsp;//目标设备的句柄nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;intnbsp;nXDest,nbsp;//nbsp;目标对象的左上角的X坐标nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;intnbsp;nYDest,nbsp;//nbsp;目标对象的左上角的X坐标nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;intnbsp;nWidth,nbsp;//nbsp;目标对象的矩形的宽度nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;intnbsp;nHeight,nbsp;//nbsp;目标对象的矩形的长度nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;IntPtrnbsp;hdcSrc,nbsp;//nbsp;源设备的句柄nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;intnbsp;nXSrc,nbsp;//nbsp;源对象的左上角的X坐标nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;intnbsp;nYSrc,nbsp;//nbsp;源对象的左上角的X坐标nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;intnbsp;dwRopnbsp;//nbsp;光栅的操作值nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;publicnbsp;constnbsp;intnbsp;ROP_SrcCopynbsp;=nbsp;0xCC0020;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;publicnbsp;Form1()nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;{nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;InitializeComponent();nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;}nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;privatenbsp;voidnbsp;btnShow_Click(objectnbsp;sender,nbsp;EventArgsnbsp;e)nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;{nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Imagenbsp;imgnbsp;=nbsp;Image.FromFile(@“image\1.bmp“);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Graphicsnbsp;mgnbsp;=nbsp;Graphics.FromImage(img);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Graphicsnbsp;gnbsp;=nbsp;this.picMain.CreateGraphics();nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;//pictureBoxnbsp;picMainnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;intnbsp;xnbsp;=nbsp;this.picMain.Width;nbsp;//pictureBox的Widthnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;intnbsp;ynbsp;=nbsp;this.picMain.Height;nbsp;//pictureBox的Heightnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;IntPtrnbsp;dc1nbsp;=nbsp;g.GetHdc();nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;IntPtrnbsp;dc2nbsp;=nbsp;mg.GetHdc();nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;BitBlt(dc1,nbsp;100,nbsp;100,nbsp;x,nbsp;y,nbsp;dc2,nbsp;0,nbsp;0,nbsp;ROP_SrcCopy);nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;}nbsp;nbsp;nbsp;nbsp;}}在picMain里面的图的大小和1.bmp相同,但就是一团黑色的.
▼优质解答
答案和解析
必须是Graphics绘制到能看到的地方才能用BitBlt也就是说先用Graphics的RrawImage把图绘到一个picbox,然后才能用BitBlt把图从一个picbox复制到另一个picbox下面这个例子是VB.net的,不过可以C#化。如果需要就留言吧。