2013-05-14 34 views
3

這是我在堆棧溢出中的第一篇文章,希望我能理解。我使用從WPF擴展的zoomControl可以顯示與平移和縮放支持的圖像:WPF ZoomControl和Adorners

<DockPanel Grid.Row="1" x:Name="canvas">    
    <Controls:ZoomControl x:Name="zoomControl"> 
     <Canvas x:Name="canvas">  
      <Image x:Name="imageControl" Stretch="None" /> 
     </Canvas> 
    </Controls:ZoomControl> 
</DockPanel> 

當用戶用bowse對話框中選擇圖像,我加載圖像,像這樣:

bmp = new BitmapImage(new Uri(fileName)); 
    this.imageControul.Source = bmp; 

我想添加矩形\ adorners到用戶根據某些圖像處理加載的圖像上的特定位置(像素座標)。

var r = new Rectangle(); 
r.StrokeThickness = 5; 
r.Stroke = Brushes.Black; 
r.Fill = Brushes.Transparent; 
r.Width = width; 
r.Height = height; 

Canvas.SetLeft(r, y); 
Canvas.SetTop(r, x); 

canvas.Children.Add(r); 

但是,矩形沒有放在預期的位置?規模和位置錯誤。

感謝,

約翰

+0

什麼是矩形的「特定位置」?矩形應該只是整個圖像的邊界嗎? – GenericTeaCup 2014-02-28 10:59:20

回答

0

我想到的問題是,你的畫布正在擴大,以填補空間,而不是鎖定到矩形。用Snoop之類的工具看一下,看看兩者的邊界框是什麼。

您可能可以在畫布上使用Horizo​​ntal和VercticalAlignment修復它,將它們設置爲Stretch以外的任何其他項。

如果不這樣

<ZoomBox> 
    <Grid> 
    <Image/> 
    <Canvas/> 
    </Grid> 
</ZoomBox> 

所以圖像和畫布是由正在被轉化父網格劃分工作,重組了。