我有背景圖像的帆布:WPF - 如何計算出畫布背景圖像被裁剪了多少?
var bi = new BitmapImage(new Uri(imgLocFull));
var ib = new ImageBrush(bi) {Stretch = Stretch.UniformToFill};
MyCanvas.Background = ib;
我的圖像上覆蓋各種形狀,並希望相對於背景圖像的形狀的位置是固定的。
如果我的應用程序窗口被調整大小,橫向和縱向裁剪圖像的數量會發生變化,並且當我的形狀被重繪時,它們不會出現在背景圖像上的相同位置。
如何確定已裁剪多少圖像(對覆蓋物體的位置應用調整因子?)還是有更好的方法來修復相對於背景圖像的形狀位置?
這是我現在的繪圖代碼:
var l = new Ellipse();
var scb = new SolidColorBrush();
scb.Color = Color.FromRgb(rCol, gCol, bCol);
l.Fill = scb;
l.StrokeThickness = 0;
l.Width = 3;
l.Height = 3;
Canvas.SetBottom(l, point.Y); // * clipping factor here?
Canvas.SetLeft(l, point.X); // * clipping factor here?
MyCanvas.Children.Add(l);
編輯:進一步明確 這裏是什麼,我想實現一個具體的例子。我的圖像是一張航空照片,我想標記一個特定的地理特徵(例如橢圓)。
當調整窗口大小時,橢圓不停留在特徵上,它保持相對於左側和頂部的畫布。
我可以通過使用因子(newx = newheight/oldheight * oldx
)將其移動到更接近正確的位置,但由於UniformToFill
拉伸模式,這看起來有些圖像從畫布上剪掉,所以這不起作用。
'Point.X'和'Point.Y'是在調整大小之前根據窗口大小計算出來的。我現在需要調整它們以迎合尺寸調整操作。 – dylanT