< /code>
trankellipse (метод, который я использую для рисования эллипа, корректировкаpublic void DrawEllipse()
{
// Adjust To Canvas
(double x, double y) = AdjustToCanvas(Mouse.GetPosition(ImageCanvas));
// Center Ellipse
x -= EllipseClick.Width / 2;
y -= EllipseClick.Height / 2;
Canvas.SetLeft(EllipseClick, x);
Canvas.SetTop(EllipseClick, y);
}
< /code>
onmouseleftbuttondown (метод щелчка, чтобы нарисовать эллипс) < /p>
public void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
DrawEllipse();
Point point = Mouse.GetPosition(SelectedPartImage);
if (!(point.ConvertWPFPointToImagePoint(
SelectedPartImageSource.PixelWidth,
SelectedPartImageSource.PixelHeight,
SelectedPartImage.ActualWidth,
SelectedPartImage.ActualHeight))
{
return;
}
// CheckAlpha checks that the clicked point is inside the image and not outside of it.
SelectPositionSuccess = CheckAlpha((int)point.X, (int)point.Y);
EllipseClick.Visibility = SelectPositionSuccess ? Visibility.Visible : Visibility.Hidden;
if (SelectPositionSuccess)
{
//Saving the Canvas
RenderTargetBitmap rtb = new RenderTargetBitmap(
(int)SelectedPartImageSource.Width,
(int)SelectedPartImageSource.Height,
96d,
96d,
System.Windows.Media.PixelFormats.Default);
rtb.Render(ImageCanvas);
//endcode as PNG
PngBitmapEncoder pngEncoder = new PngBitmapEncoder();
pngEncoder.Frames.Add(BitmapFrame.Create(rtb));
//save to memory stream
System.IO.MemoryStream ms = new System.IO.MemoryStream();
pngEncoder.Save(ms);
ms.Close();
var bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.StreamSource = ms;
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.EndInit();
System.IO.File.WriteAllBytes("test.png", ms.ToArray());
}
}
Любые идеи, как я могу исправить это поведение?
Заранее!
У меня есть изображение внутри холста, пользователь может щелкнуть в изображении и появилась зеленая точка, где пользователь щелкнул. /> xaml: < /p> [code]
< /code> trankellipse (метод, который я использую для рисования эллипа, корректировкаpublic void DrawEllipse() { // Adjust To Canvas (double x, double y) = AdjustToCanvas(Mouse.GetPosition(ImageCanvas));
// Center Ellipse x -= EllipseClick.Width / 2; y -= EllipseClick.Height / 2;