private voID RotationMenu_Click(object sender,System.EventArgs e){ Graphics g = this.CreateGraphics(); g.Clear(this.Backcolor); Bitmap curBitmap = new Bitmap(@"roses.jpg"); g.DrawImage(curBitmap,200,200); // Create a Matrix object,call its Rotate method,// and set it as Graphics.transform Matrix X = new Matrix(); X.Rotate(30); g.transform = X; // Draw image g.DrawImage(curBitmap,new Rectangle(205,200),curBitmap.WIDth,curBitmap.Height,GraphicsUnit.Pixel); // dispose of objects curBitmap.dispose(); g.dispose(); }
我的问题有两个部分:
>你将如何在后台线程上完成this.CreateGraphics()?可能吗?我的理解是在这个例子中是一个UI对象.因此,如果我在后台线程上进行此处理,我将如何创建图形对象?
>一旦我完成处理,我将如何从我正在使用的Graphics对象中提取位图?我无法找到一个如何做到这一点的好例子.
另外:格式化代码示例时,如何添加换行符?如果有人可以给我发表评论,说明我真的很感激.谢谢!
解决方法 要绘制位图,您不希望为UI控件创建Graphics对象.您可以使用FromImage方法为位图创建Graphics对象:Graphics g = Graphics.FromImage(theImage);
Graphics对象不包含您绘制到它的图形,而只是它在另一个画布上绘制的工具,通常是屏幕,但它也可以是Bitmap对象.
因此,您不先绘制然后提取位图,首先创建位图,然后创建要在其上绘制的Graphics对象:
Bitmap destination = new Bitmap(200,200);using (Graphics g = Graphics.FromImage(destination)) { Matrix rotation = new Matrix(); rotation.Rotate(30); g.transform = rotation; g.DrawImage(source,200);}总结
以上是内存溢出为你收集整理的c# – GDI:如何在背景线程上将Graphics对象渲染为位图?全部内容,希望文章能够帮你解决c# – GDI:如何在背景线程上将Graphics对象渲染为位图?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)