이미지에서 다룰 수있는 몇 가지 사용자 지정 컨트롤이 있는데,이 컨트롤이 화면에서 드래그되어 다시 표시되면 이미지가 제대로 다시 그려지지 않습니다. 나는이 다양한 컨트롤에 대해 페인트를 오버 라이딩했습니다. 화면에서 계속 드래그하면 올바르게 그려지지 않는 것 외에는 잘 작동하는 것 같습니다. 누구나 이것이 일어날 수있는 이유와 해결책을 알고 있습니까?오프 스크린/흐리게 처리 된 후 사용자 정의 컨트롤에서 다시 그리기를 트리거 하시겠습니까?
편집 : 대화 상자가 단순히 화면에서 벗어난 경우가 아니라 너무 빨리 크기가 조정 된 경우에도 문제가있는 것 같습니다. 그들은 그들 자신 위에 그려진 것처럼 보이기 시작합니다. 어떤 종류의 의미가 있지만, 나는 그것을 치료하는 방법을 알아낼 수 없습니다.
편집 2 : 이들은 fourstates (호버, 정상 장애인 클릭)와 사용자 정의 버튼, 그래서 내가 컨테이너 것은 내가 문제를 생각하지 않는 생각하지 않습니다 ..? 의 OnPaint 코드는 다음과 같습니다
private void CQPButton_Paint(object sender, PaintEventArgs e)
{
e.Graphics.Clear(BackColor);
if (BackgroundImage != null)
e.Graphics.DrawImage(BackgroundImage, e.ClipRectangle);
if (Image != null)
{
RectangleF rect = new RectangleF();
rect.X = (float)((e.ClipRectangle.Width - Image.Size.Width)/2.0);
rect.Y = (float)((e.ClipRectangle.Height - Image.Size.Height)/2.0);
rect.Width = Image.Width;
rect.Height = Image.Height;
e.Graphics.DrawImage(Image, rect);
}
if (Text != null)
{
SizeF size = e.Graphics.MeasureString(this.Text, this.Font);
// Center the text inside the client area of the PictureButton.
e.Graphics.DrawString(this.Text,
this.Font,
new SolidBrush(this.ForeColor),
(this.ClientSize.Width - size.Width)/2,
(this.ClientSize.Height - size.Height)/2);
}
}
나는 시도하고 그들이 스크린 떨어져있을 때 처리하는 ClientSizeChanged 다양한 이벤트 LocationChanged에 다시 칠하고 시도하고 크기 조정 문제를 처리하는 이동 강제로 시도했습니다, 그리고 아무것도 고집. 나는 내가 무엇을 놓치고 있는지 모른다. ...
: 당신은 당신의 통제의 실제 크기를 사용해야합니다. –
@ JohnArlen - OnPaint 이벤트와 약간의 설명을 추가했습니다. – trycatch