2015-02-14 4 views
1

У меня есть коробка с изображением, в которой есть растянутое изображение. У меня есть прямоугольник выбора на части изображения. Я пытаюсь сохранить выбор в качестве нового изображения. Он не учитывает длину основного окна изображения, поэтому он не фиксирует правильные координаты прямоугольника выбора. Вот мой фрагмент кода (когда это называется, прямоугольник выделения уже установлен):Как получить часть растянутого изображения?

Dim sourcebmp As New Bitmap(picScan.Image) 
Dim destinationbmp As New Bitmap(selection.Width, selection.Height) 
Dim gr As Graphics = Graphics.FromImage(destinationbmp) 
Dim destinationrectangle As New Rectangle(0, 0, selection.Width, selection.Height) 
gr.DrawImage(sourcebmp, destinationrectangle, selection, GraphicsUnit.Pixel) 
picScan.Image = New Bitmap(destinationbmp) 

ответ

1

Я нашел пример, который решает эту проблему:

'Take a temporary snapshot of the picture box: 
Dim tempBitmap As Bitmap = New Bitmap(picScan.ClientSize.Width, picScan.ClientSize.Height) 
picScan.DrawToBitmap(tempBitmap, picScan.ClientRectangle) 

'Copy the selection rectangle from the temporary snapshot to the target bitmap: 
Dim target As New Bitmap(selection.Width, selection.Height) 
Using g As Graphics = Graphics.FromImage(target) 
    g.DrawImage(tempBitmap, target.GetBounds(0), selection, GraphicsUnit.Pixel) 
End Using 

tempBitmap.Dispose() 
picScan.Image = target 
Смежные вопросы