0

我正在用 C# 开发一个新的应用程序,我需要一些帮助。

我想做这个:在某物上画一条线。更具体地说,有一些图片框是我用代码生成的,它们在应用程序启动时不可见。

如果我想要什么,这是一个例子:

在此处输入图像描述

我想要的是这样的:

在此处输入图像描述

我用于绘制第一行的代码是这样的:

Graphics g;
Pen p;

void drawline(){
   g = this.CreateGraphics();
   p = new System.Drawing.Pen(Color.Red, 15);
   g.DrawLine(p, new Point(10, 150), new Point(900, 150));
}

PS:我很抱歉第二行(它是在Paint中绘制的:))

4

2 回答 2

1

您实际上可以使用图像顶部的矩形(红色标签)。比使用图形命令简单得多。

于 2013-08-08T13:48:52.080 回答
1

您可以在绘制线条之前在图形上绘制图像,而不是在表单上放置图片框。

g.DrawImage(image, point)

也许这会导致什么?

    Bitmap _bitmap = new Bitmap(PictureBox1.Width, PictureBox1.Height);

    Dictionary<int, Image> _images = new Dictionary<int, Image>();
    System.Drawing.Pen _redPen = new System.Drawing.Pen(Color.Red, 15);
    bool _linePresent = false;

    int[] _imageIndex = { 1, 2, 1 };

    public void Init()
    {
        _images.Add(1, Image.FromFile("Melon.png"));
        _images.Add(2, Image.FromFile("Pineapple.png"));
        PictureBox1.Image = _bitmap;
    }

    public void Update()
    {
        Graphics graphics = Graphics.FromImage(_bitmap);
        graphics.Clear(Color.White);
        graphics.DrawImage(_images[_imageIndex[0]], 50, 100);
        graphics.DrawImage(_images[_imageIndex[1]], 350, 100);
        graphics.DrawImage(_images[_imageIndex[2]], 650, 100);

        if (_linePresent)
            graphics.DrawLine(_redPen, new Point(10, 150), new Point(900, 150));

    }

更新/刷新图像可能存在一些问题。但我没有测试它。

于 2013-08-08T13:45:29.757 回答