C#重绘控件后矩形框部分线条缺失问题 50
如图,我在一个panel里加了若干picturebox,选中picbox以后会显示一个红框。当我移动滚动条,使最左边的picturebox移出视图,再移回视图以后,就成了...
如图,我在一个panel里加了若干picturebox,选中picbox以后会显示一个红框。当我移动滚动条,使最左边的picturebox移出视图,再移回视图以后,就成了这样。
代码如下:
private void panelPics_Scroll(object sender, ScrollEventArgs e) { //this.panelPics.Refresh(); for (int i = 0; i < picNum; i++ ) { PictureBox picBox = (PictureBox) this.panelPics.Controls[i]; picBox.Invalidate(); paintPicBox(sender, i, (int)this.picSelected[i]); } }
void paintPicBox(object sender, int index, int needpaint) { PictureBox picBox = (PictureBox)sender;
Pen pen; Graphics gdi = picBox.CreateGraphics(); if (needpaint == 1) { pen = new Pen(Color.Red, 2);
int topX = picBox.ClientRectangle.X; int topY = picBox.ClientRectangle.Y; int width = picBox.ClientRectangle.Width; int height = picBox.ClientRectangle.Height; gdi.DrawRectangle(pen, topX, topY, topX + width, topY+height); } else { picBox.Invalidate(); } } 展开
代码如下:
private void panelPics_Scroll(object sender, ScrollEventArgs e) { //this.panelPics.Refresh(); for (int i = 0; i < picNum; i++ ) { PictureBox picBox = (PictureBox) this.panelPics.Controls[i]; picBox.Invalidate(); paintPicBox(sender, i, (int)this.picSelected[i]); } }
void paintPicBox(object sender, int index, int needpaint) { PictureBox picBox = (PictureBox)sender;
Pen pen; Graphics gdi = picBox.CreateGraphics(); if (needpaint == 1) { pen = new Pen(Color.Red, 2);
int topX = picBox.ClientRectangle.X; int topY = picBox.ClientRectangle.Y; int width = picBox.ClientRectangle.Width; int height = picBox.ClientRectangle.Height; gdi.DrawRectangle(pen, topX, topY, topX + width, topY+height); } else { picBox.Invalidate(); } } 展开
2个回答
展开全部
你用CreateGraphics 产生的绘图对象,这种方法 只要被任何其他东西挡住 绘制的东西就会消失。
解决方法:
1、简单的设置PictureBox 的边框选项
2、最根本的方法是 继承一个PictureBox 然后overwrite它的paint函数 这样无论怎么挡都没关系。
解决方法:
1、简单的设置PictureBox 的边框选项
2、最根本的方法是 继承一个PictureBox 然后overwrite它的paint函数 这样无论怎么挡都没关系。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
能否把demo发到百度网盘以便调试?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询