我正在研究类似绘画的程序。有一个带有Sketch的usercontrol子类“ SketchControl”。草图又具有位图。
以前,每当在用户控件中绘制形状时,该形状都会直接绘制到位图上。我们必须更改程序,以便将所有表单都添加到“绘图”列表中,以便我们可以保存绘图。现在我们必须从该列表中绘制形状,但是我无法这样做。形状具有绘制方法“绘制”。
我尝试将以下代码或类似代码添加到我的SketchControl绘画方法和我的Sketch绘画方法中:
using (Graphics g = Graphics.FromImage(myBitmap))
{
for (int i = 0; i < drawing.Count; i++)
{
drawing[i].draw(g);
}
}
这不起作用。
特定形状的“绘制”可能看起来像
public override void draw(Graphics gr)
{ gr.DrawEllipse(pen, p1, p2); }
很抱歉,这是一个愚蠢的问题,但我非常感谢您的帮助。当我从列表中绘制形状而不是直接绘制到位图上时,如何获取形状以在位图上打开op?我的代码应该在哪里?
答案 0 :(得分:0)
您可以检查是否保存了Graphics或draw方法的实际实现吗?这是带有图片输出的功能图
var drawing = new List<IDrawable>
{
new AquaCircle(),
new RedCircle(),
};
var imageFile = new Bitmap(200, 200);
using (var g = Graphics.FromImage(imageFile))
{
for (var i = 0; i < drawing.Count; i++)
{
drawing[i].Draw(g);
}
}
imageFile.Save("test.jpg");
形状会影响界面
public interface IDrawable
{
void Draw(Graphics g);
}
public class AquaCircle : IDrawable
{
void IDrawable.Draw(Graphics g)
{
g.DrawEllipse(new Pen(Color.Aqua, 1), 1, 1, 100, 100);
}
}
public class RedCircle : IDrawable
{
void IDrawable.Draw(Graphics g)
{
g.DrawEllipse(new Pen(Color.Red, 1), 25, 25, 100, 100);
}
}