2010年7月18日 星期日

Silverlight 版本的線上小畫家-與縮圖進行互動


縮圖不只是將圖片縮小而已,並且座標也會跟著縮小,例如縮圖紅色矩形左上角的座標,與原圖紅色矩形左上角的座標相等。




下圖左上角是縮圖,我希望在縮圖上按下滑鼠左鍵時,在ScrollViewer上的原圖會移到這個區域,當我在原圖上面進行繪圖時,縮圖的內容也要跟著改變。





初次產生縮圖時,需要設定縮放比例。

ScaleTransform scaleScaleMap = new ScaleTransform();
if (ScaleX >= ScaleY)
{
scaleScaleMap.ScaleX = ScaleX;
scaleScaleMap.ScaleY = ScaleX;
}
else
{
scaleScaleMap.ScaleX = ScaleY;
scaleScaleMap.ScaleY = ScaleY;
}

ScaleMap.Background = imageBrush; ;
ScaleMap.RenderTransform = scaleScaleMap;


當原圖有改變需要更新縮圖時,呼叫UpdateScaleMap(),其中WriteableBitmap有Transform參數可用。

void UpdateScaleMap()
{
if (ScaleMap.Visibility == Visibility.Visible)
{
WriteableBitmap bitmap = new WriteableBitmap(TracingPaper, null);
ImageBrush ib = new ImageBrush();
ib.ImageSource = bitmap;
ScaleMap.Background = ib;
}
}


C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十一)制作精美的Mini地图① - 深蓝色右手 - 博客园