我需要绘制一些文字及计算结果,显示在一个panel上,显示的结果比较多,所以就想如何只绘制某一部分?例如下面这样: private void Form2_Paint(object sender, PaintEventArgs e)
{
StringBuilder sb = new StringBuilder();
sb.Append("D1= 12mm");
sb.Append(" ");
sb.Append("D2= 23mm");
sb.Append(" ");
sb.Append("D2= 32mm");
sb.Append(" \n");
sb.Append("V1= 33\xb3"); Rectangle displayRectangle =
new Rectangle(new Point(20, 20), new Size(500, 500)); // Construct 2 new StringFormat objects
StringFormat format1 = new StringFormat(StringFormatFlags.NoClip);
StringFormat format2 = new StringFormat(format1); // Set the LineAlignment and Alignment properties for
// both StringFormat objects to different values.
format1.LineAlignment = StringAlignment.Center;
format1.Alignment = StringAlignment.Center; // Draw the bounding rectangle and a string for each
// StringFormat object.
e.Graphics.DrawRectangle(Pens.Black, displayRectangle);
e.Graphics.DrawString(sb.ToString(), this.Font,
Brushes.Red, (RectangleF)displayRectangle, format1);
}运行结果:
我如何只重绘最后一个结果?或者选择中间某个结果重绘?关键是结果多的时候,有可能把一些其他显示内容覆盖,重绘后其他的内容不能丢掉,如何实现? 全部重绘当然也能实现,但是多的时候还有点小慢。找到这个字符串的坐标,然后重绘制,但是如果覆盖其他的内容,有重叠的情况下,如何搞?
{
StringBuilder sb = new StringBuilder();
sb.Append("D1= 12mm");
sb.Append(" ");
sb.Append("D2= 23mm");
sb.Append(" ");
sb.Append("D2= 32mm");
sb.Append(" \n");
sb.Append("V1= 33\xb3"); Rectangle displayRectangle =
new Rectangle(new Point(20, 20), new Size(500, 500)); // Construct 2 new StringFormat objects
StringFormat format1 = new StringFormat(StringFormatFlags.NoClip);
StringFormat format2 = new StringFormat(format1); // Set the LineAlignment and Alignment properties for
// both StringFormat objects to different values.
format1.LineAlignment = StringAlignment.Center;
format1.Alignment = StringAlignment.Center; // Draw the bounding rectangle and a string for each
// StringFormat object.
e.Graphics.DrawRectangle(Pens.Black, displayRectangle);
e.Graphics.DrawString(sb.ToString(), this.Font,
Brushes.Red, (RectangleF)displayRectangle, format1);
}运行结果:
我如何只重绘最后一个结果?或者选择中间某个结果重绘?关键是结果多的时候,有可能把一些其他显示内容覆盖,重绘后其他的内容不能丢掉,如何实现? 全部重绘当然也能实现,但是多的时候还有点小慢。找到这个字符串的坐标,然后重绘制,但是如果覆盖其他的内容,有重叠的情况下,如何搞?
看这代码,还没有考虑画面超出客户区的显示。
我是针对问题发表意见的,楼主水平还是挺不错的。
提个建议,考虑zorder了吗? 把控制权交给用户可行吗?