我不知道如何正确解释,但也许代码会更清晰。
title1_Box
是PictureBox
,我试图绘制矩形项目'进入title1_Box
。
Rect
是包含矩形的列表。
这可能是愚蠢的事。我是编程新手。 提前谢谢。
private void UpdateTiles(string path)
{
Image imgsrc = Image.FromFile(@path);
Image imgdst = new Bitmap(imgsrc.Width / 2, imgsrc.Height);
using (Graphics gr = Graphics.FromImage(imgdst))
{
for (int imgIndex = 0; imgIndex <= imgsrc.Width / 32; imgIndex++)
{
rects.Add(new Rectangle((imgIndex * 32), 0,
(32 + (imgIndex * 32)), 32));
}
foreach (Rectangle item in rects)
{
gr.DrawImage(imgsrc,
item);
tile1_Box.RectangleToScreen(item);
}
}
}
答案 0 :(得分:0)
您需要从Paint
事件中调用此事件,并将其 Graphics
对象传递到您的函数中:
private void title1_Box_Paint(object sender, PaintEventArgs e)
{ UpdateTiles(e.Graphics, path); }
private void UpdateTiles(Graphics gr, string path)
{
//.. now you gr instead of any local Graphics..!!
你也应该做一个
title1_Box.Invalidate();
到目前为止,您调用 UpdateTiles 的地方。只要Windows检测到需要重新绘制,Thuis就会调用Paint
事件,同时需要被调用。
答案 1 :(得分:0)
您可以直接从picterBox实例创建Graphic类实例:
Graphics gr = title1_Box.CreateGraphics();
使用gr进行的操作将在title1_Box中进行,因此您现在可以直接绘制到您的pictureBox中。