類似于
This is important because I'm trying to allow the user to select an ROI, and I need to know when the selection is beyond the image bounds, though I still want to allow it.
uj5u.com熱心網友回復:
您可以對影像邊界(例如中心)內的“測驗點”執行轉換,并對轉換后的測驗點執行模運算。然后使用轉換后的測驗點和調整后的(通過模數)測驗點之間的偏移量來調整實際點。
var p = e.GetPosition(TheImage);
p = new Point(
p.X * bs.PixelWidth / TheImage.ActualWidth,
p.Y * bs.PixelHeight / TheImage.ActualHeight);
if (TheImage.Source is TransformedBitmap tb)
{
var inverse = tb.Transform.Value;
inverse.Invert();
inverse.OffsetX = 0.0;
inverse.OffsetY = 0.0;
var w = tb.Source.PixelWidth;
var h = tb.Source.PixelHeight;
var v = new Vector(bs.PixelWidth / 2, bs.PixelHeight / 2); // test point
var v1 = inverse.Transform(v); // transformed test point
var v2 = new Vector((v1.X w) % w, (v1.Y h) % h); // adjusted
p = inverse.Transform(p) - v1 v2; // add adjusting offset
}
TheLabel.Content = $"x: {p.X:F2}, y: {p.Y:F2}";
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/365009.html
標籤:c# .net wpf image bitmapsource
