我有一个大于 PictureEdit 框的图像问题是当用鼠标创建矩形时,图像上的正确点未被选中。它似乎是在 PictureEdit 中选择点而不是它自己的图像。我正在尝试裁剪图像并将裁剪后的图像放在新的 Pictureedit 中。下面的示例代码。
private void originalPictureEdit_MouseDown(object sender, MouseEventArgs e)
{
//Point TextStartLocation = e.Location;
Cursor = Cursors.IBeam;
if (_drawStarted == false)
{
_drawStarted = true;
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
Cursor = Cursors.Cross;
_cropX = e.X;
_cropY = e.Y;
_selection = new Rectangle(new Point(e.X, e.Y), new Size());
_cropPen = new Pen(Color.Black, 1);
_cropPen.DashStyle = DashStyle.DashDotDot;
}
}
originalPictureEdit.Refresh();
}
private void originalPictureEdit_MouseMove(object sender, MouseEventArgs e)
{
if (originalPictureEdit.Image == null)
return;
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
originalPictureEdit.Refresh();
_selection.Width = e.X - _selection.X;
_selection.Height = e.Y - _selection.Y;
originalPictureEdit.CreateGraphics().DrawRectangle(_cropPen, _cropX, _cropY, _selection.Width, _selection.Height);
}
}
private void originalPictureEdit_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left && _drawStarted && _selection.Size != new Size())
{
_croppedImage = (_displayedImage as Bitmap).Clone(_selection, _displayedImage.PixelFormat);
modifiedPictureEdit.Image = _croppedImage;
modifiedPictureEdit.Width = _croppedImage.Width;
modifiedPictureEdit.Height = _croppedImage.Height;
}
Cursor = Cursors.Default;
_drawStarted = false;
}