我無法理解繪圖組的問題。我在wpf中創建了一個地圖編輯器,這是我的第一個wpf項目,我一直在尋找/使用繪圖組。如何在平鋪圖像時有效地使用DrawingGroup?
我有一組應用程序啓動時填入基於關閉精靈的文件夾的左側瓦片。它們都按照我設定的規則進行佈局(每行3個瓦片,每個瓦片32個像素)。下面的示例:
private void RefreshTileList()
{
// For now load in all textures as possible tiles
DrawingGroup dGroup = new DrawingGroup();
Rect r = new Rect();
r.X = 0.0;
r.Y = 0.0;
r.Width = Settings.Default.TileThumbWidth;
r.Height = Settings.Default.TileThumbHeight;
foreach (WPFTexture tex in imgFind.TileTextures)
{
ImageDrawing iDraw = new ImageDrawing(tex.src, r);
dGroup.Children.Add(iDraw);
r.X += r.Width;
if (r.X > r.Width * Settings.Default.TileThumbMaxColumns)
{
r.X = 0.0;
r.Y += r.Height;
}
}
// Make a drawing image and send it to the Image in canvas
DrawingImage drawImage = new DrawingImage(dGroup);
tileImage.Source = drawImage;
}
現在我在我想做同樣的事情用不同的是,瓷磚動態放置其他畫布圖像控制。以下是我迄今爲止:
private void AreaDrawingCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if(curSelIndex > -1 && curSelIndex < imgFind.TileTextures.Count)
{
BitmapSource tileSrc = imgFind.TileTextures[curSelIndex].src;
Point mousePos = e.GetPosition(sender as Canvas);
Size size = new Size(tileSrc.Width, tileSrc.Height);
Rect r = new Rect(mousePos, size);
ImageDrawing iDraw = new ImageDrawing(tileSrc, r);
areaDrawGroup.Children.Add(iDraw);
}
}
這裏是什麼用途areaDrawGroup初始化:
// Setup drawing for area
DrawingImage areaDrawImage = new DrawingImage(areaDrawGroup);
areaImage.Source = areaDrawImage;
areaImage.Stretch = Stretch.None;
AreaDrawingCanvas.Children.Add(areaImage);
如果我不請在位於點(0,0)死圖像添加繪圖組和我點擊圖像控件。它將抵消一個奇怪的位置。當我繼續點擊左上角的位置時,它會更正它在哪裏繪製圖塊,同時將所有其他圖塊移動過來。
我的問題是我在哪裏可以找到一個很好的例子平鋪或我做了什麼錯?因爲添加死圖像來修復其他圖像所在的位置似乎對我錯過的一些簡單操作來說非常糟糕。
我有一個類似的問題而回它原來是在畫布上的'ClipToBounds'財產,我不能remeber如果我設置爲true或false,但這並解決我的問題,嘗試在你的'AreaDrawingCanvas設置此' –
對那個不利。我把它設置爲true,不在滾動條下繪製內容(但我確實關閉了它)。 我試圖從鼠標位置減去100,並在零零點擊。黑客破裂。看起來在圖像控制中,我根本不可能有任何小於0的孩子。即使當我用Canvas移動畫布中的圖像時,它也會出現毛刺,好像我無法做到。 – riekistyx