c# – GDI:如何在背景线程上将Graphics对象渲染为位图?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – GDI:如何在背景线程上将Graphics对象渲染为位图?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1526字,纯文字阅读大概需要3分钟。
内容图文
![c# – GDI:如何在背景线程上将Graphics对象渲染为位图?](/upload/InfoBanner/zyjiaocheng/759/9ba1882e6a314ef9a1b3b7d25ae94a49.jpg)
我想使用GDI在后台线程上渲染图像.我找到了关于如何使用GDI旋转图像的this example,这是我想要做的操作.
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, 0, 0, 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, 0, 200, 200),
0, 0, 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, 0, 0, 200, 200);
}
内容总结
以上是互联网集市为您收集整理的c# – GDI:如何在背景线程上将Graphics对象渲染为位图?全部内容,希望文章能够帮你解决c# – GDI:如何在背景线程上将Graphics对象渲染为位图?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。