두 개의 서로 다른 확대 이미지가 화면에 사용자 지정됩니다. 그들 각각은 화면의 절반을 차지합니다.이미지의 사용자 지정 그리기 부분 .net 012
는 내가 이전의 OnPaint() 오버라이드 (override) (내 생각) 3.5 .NET에서 일을 한:
//using System.Drawing
/// <summary>
/// Custom drawing
/// </summary>
/// <param name="e"></param>
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawImage(Image, DestRectangle, SrcRectangle, GraphicsUnit);
}
의 drawImage 메소드의 설명 : "지정된에 지정된 이미지의 특정 부분을 그립니다 위치 및 지정된 크기. " (MSDN)
.net 4.5를 사용하여 동일한 작업을 수행하려고합니다. OnRender를 재정의하고 DrawingContext 객체를 사용하여 드로잉을 수행합니다. 기본적으로 이것은 내 루프입니다.
//using System.Windows.Media;
/// <summary>
/// Overide the OnRender to have access to a lower level of drawing.
/// </summary>
/// <param name="drawingContext"></param>
protected override void OnRender(DrawingContext drawingContext)
{
drawingContext.DrawImage(BitmapImage_Left, Window_LeftHalf);
drawingContext.DrawImage(BitmapImage_Right, Window_RightHalf);
}
확장 된 그림을 표시하려면 잘 작동합니다. 내가 원하는 것은 (Window_LeftHalf와 Window_RightHalf에서) 그림의 일부분을 (확대와 같이) 표시하는 것입니다. 기본적으로 어떤 graphics.DrawImage (위를보십시오)하지만 DrawingContext 객체를 사용합니다.
MSDN을 살펴 보았지만 흥미로운 것을 끌어낼 수 없었습니다. DrawingContext에 의해 나중에 사용되는 버퍼를 만드는 것일까 요? 축소 된 이미지를 보유하는 중간 객체가 필요하다는 것은 거의 확실합니다. 어떤 아이디어?
업데이트 : 이미지를 탐색 할 때 마우스를 사용하고 있으므로 성능이 인 경우이 중요합니다.
/// <summary>
/// Handles the mouse move events.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private static void MouseMoveEventHandler(RoutedEventArgs e)
{
// The size of the crop is always the same
// but the portion of the picture different.
crop.X += mouseDelta.X;
crop.Y += mouseDelta.Y;
}
안녕하세요, cokeman19, 답장을 보내 주셔서 감사합니다. 예! 나는 그것을 아직 시도하지 않았지만, 내가 원하는 것처럼 보입니다. 유일한 차이점은 이미지의 새 섹션이 필요할 때마다 'e.Graphics.DrawImage()'가 항상 동일한 비트 맵을 사용하는 CroppedBitmap 객체를 만들고 수정해야한다는 것입니다. 어쨌든 고마워, 내가 사용할거야. 내 게시물을보다 구체적인 문제로 업데이트하겠습니다. – jimasun