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(); } }
展开
 我来答
fej121121
2014-11-22 · TA获得超过651个赞
知道小有建树答主
回答量:655
采纳率:66%
帮助的人:531万
展开全部
你用CreateGraphics 产生的绘图对象,这种方法 只要被任何其他东西挡住 绘制的东西就会消失。
解决方法:
1、简单的设置PictureBox 的边框选项
2、最根本的方法是 继承一个PictureBox 然后overwrite它的paint函数 这样无论怎么挡都没关系。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光的雷咩咩
2014-11-22 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7694万
展开全部

能否把demo发到百度网盘以便调试?

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式