如何在面板上绘制这些特定形状?
我有两个面板,我想在其中绘制这两个数字:
每个都有一个图形,我可以将图像放在
BackgroundImage
面板属性的背景中,但在某些时候我必须更改图形的颜色,因此如果我将它用作背景图像,我将不得不创建一个图像您要使用的每种颜色或创建一种将颜色更改为听起来很复杂的图像的方法。
例如以这种方式:
private readonly List<Image> imageList;
private int currentImageIndex = 1;
private List<Image> CreateImages()
{
var lista = new List<Image>();
int width = 250;
int height = 50;
using (SolidBrush brush = new SolidBrush(Color.SteelBlue))
using (SolidBrush whiteBrush = new SolidBrush(Color.White))
{
for (int i = 0; i <= width; i += 10)
{
var bmp = new Bitmap(width, height);
using (Graphics gfx = Graphics.FromImage(bmp))
{
gfx.FillRectangle(whiteBrush, 0, 0, width, height);
gfx.FillRectangle(brush, width / 2 - i / 2, 0, i, height);
}
lista.Add(bmp);
}
}
return lista;
}
它的用途如下:
panel1.BackgroundImage = imageList[currentImageIndex]; //Indice 0
panel2.BackgroundImage = imageList[currentImageIndex]; //Indice 1
或将图形转换为位图(但我将如何使用它?):
var bmp1 = new Bitmap(Properties.Resources.Figura1);
var bmp2 = new Bitmap(Properties.Resources.Figura2);
环境:Visual Studio 2010 - C# & .NET Framework 4
您可以做的是直接在 上绘制
Panel
,利用Paint
. 此事件返回您Graphics
可以直接在其上绘制的类型的对象。我可能会做类似的事情。首先,您必须从布局窗口属性窗口或通过在构造函数中添加它来订阅您的事件
Paint
:Panel
稍后我们将创建一个负责绘制图形的方法。在我的示例中,它接收 2 个参数,一个带有它应该在其中绘制的面板,另一个带有什么类型的绘图(在此示例中,最后一个参数更改绘图的颜色,它可以接收一个类型参数
Color
,例如,它取决于根据您的需要):最后,您创建一个事件处理程序,负责调用前面的方法:
如您所见,在示例中,如果您
0
在第二个参数中传递它,则图形将是蓝色的,如果您将它传递给它,则为1
绿色。有些事情需要改进,但我认为这可以满足您的需求。
编辑
制作圆角矩形更复杂,因为 windows 图形库没有任何方法。唯一的方法是使用一个
Figure
使用Path
. 方法是这样的:要显示它,只需使用
FillPath
: