[英]GDI+ Nested Graphics objects
使用System.Drawing.Graphics
,如何拥有“嵌套的图形对象”。 主要目的是拥有几个剪切区域。
这是我想做的事情:
整个屏幕是一个Graphics对象
红色区域是其中的另一个图形并被裁剪
绿色区域是另一个区域,已修剪
内部Graphics对象可以是任何东西,而不仅仅是DrawString
该代码应如下所示:
using (var bmp = new System.Drawing.Bitmap(200, 200))
using (var mainG = System.Drawing.Graphics.FromImage(bmp))
using (var redG = ???)
using (var greenG = ???)
{
redG.SetClip(new RectangleF(...));
greenG.SetClip(new RectangleF(...));
// fill redG and greenG
}
注意:结果应转到图元文件并为矢量图形,因此不能创建位图并将其放置在mainG周围。
假定两个矢量上下文在被绘制时可以分开,则可以使用System.Drawing.Imaging.Metafile捕获矢量操作,然后将它们组合到更大的上下文中。
using (Graphics gRef = this.CreateGraphics())
{
IntPtr hdc = gRef.GetHdc();
using (System.Drawing.Imaging.Metafile mf =
new System.Drawing.Imaging.Metafile(hdc,
System.Drawing.Imaging.EmfType.EmfPlusDual))
{
gRef.ReleaseHdc();
using (Graphics redG = Graphics.FromImage(mf))
{
redG.SetClip(new RectangleF(...));
// .. draw on redG
}
// repeat for greenG
// .. save and or combine as desired
}
}
}
一种替代方法是研究增强型图元文件格式( http://msdn.microsoft.com/zh-cn/library/cc230724.aspx )并尝试手动重现剪贴蒙版。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.