0
사용자 지정 그림 파선 사각형이있는 동안 GDI +에서 문제가 발생합니다.Winform 창을 확장하면 점선 사각형이 단색으로 나타납니다.
점선 사각형의 수직 부분은 창 크기를 늘리거나 위로/아래로 스크롤 할 때 단색의 연속 선으로 나타납니다. 마우스를 빠르게 움직이면 솔리드 섹션이 점점 줄어 듭니다. 흥미롭게도 수평선은이 동작을 나타내지 않고 예상대로 나타납니다.
지금까지이 아닌 최적의 솔루션은ResizeRedraw = true
을 설정하거나
OnResize()
및
OnScroll()
동안
Invalidate()
를 호출 할 수 있었다. 물론 내가 실제로 그린 그림이 더 복잡하고 이러한 느린 호출이 유동적 인 경험을 파괴하므로이 문제를 피하고 싶습니다. 또한 새로 표시된 영역 만 무효화하려고 시도했습니다. 전체 무효화 만 작동하는 것 같습니다.
이 문제를 해결하는 방법에 대한 지침이 있습니까?
데모 코드 : 나는 두 가지 문제가 있다고 생각
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
public class Form1 : Form
{
static void Main()
{
Application.Run(new Form1());
}
public Form1()
{
this.ClientSize = new System.Drawing.Size(472, 349);
DoubleBuffered = true;
//ResizeRedraw = true;
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
int dimensions = 70;
using (Pen pen = new Pen(Color.Gray))
{
pen.DashStyle = DashStyle.Dash;
for (int x = 0; x < 20; ++x)
{
for (int y = 0; y < 20; ++y)
{
Rectangle rect = new Rectangle(x * dimensions, y * dimensions, dimensions, dimensions);
e.Graphics.DrawRectangle(pen, rect);
}
}
}
}
}
감사합니다. 언급 된 두 문제 모두 사실로 보입니다. 실선은 왼쪽 가장자리에 하나의 직사각형을 그리지 만 오른쪽에는 그려지지 않을 때 나타납니다. 또한, overdrawn 세로 섹션도이 동작을 표시합니다 (오른쪽 직사각형의 오른쪽 라인 만 올바르게 보임). 내 담당자가 게시물을 편집하기에 너무 낮기 때문에 'for'대신 'y