縮圖在我前一篇文章的定義是全景圖,利用縮圖可以快速移動,並且可以瀏覽全景,因此縮圖只需要變成圖片,讓縮圖與原圖的座標相同,並且在原圖變動時,縮圖也即時更新。
因為縮圖只是圖片,不包含其他物件,所以無法在縮圖上面選取物件,檢視或設定屬性等動作,最經典的範例就是世紀帝國,縮圖上面將每個物件都使用帶有顏色的小圓點分組,你可以選擇縮圖上面的物件並且給予命令,因為我是使用Scale的方式縮圖,所以整個座標系統都縮小了,再加上FindName可以讓你從物件名稱取得物件,縮圖與原圖的物件都有對應關係,因此縮圖被選取,利用物件名稱可以找到原圖物件,我想這樣應該就達成我們的目的了。
2010年8月31日 星期二
2010年8月30日 星期一
Silverlight專案部署環境設定
- 資料夾選項 -> 檢視 -> 「取消勾選」使用簡易檔案共用(建議使用)
- ASPNET、NETWORK SERVICE、IUSER_、IWAM_「完全控制」(這個很危險,請根據需求自行設定權限)
- 將副檔名為CS的檔案移至App_Code(在原本的專案,WCF的SVC檔案與CS檔案位於同一個目錄中)
- 設定Web_tracelog.svclog(除錯用途)
2010年8月13日 星期五
下一個平哥
平哥在C君進來之前就已經離開,C君不曾見過他,也沒有聽過他離開的理由,不過今天他知道了,因為C君他犯了平哥犯的錯誤「程式我測試過了阿!都沒有問題阿!」,C君緊接著說「不信我開我電腦裡面的程式執行給你看!」。
老闆突然在開會時,告訴C君自己所聽到其他經理敘述的事情「程式C君都測試過了,C君說都沒有問題,可是我們執行都出現問題!」,並且告訴C君平哥離開的原因,是因為這樣而導致合作不愉快,C君很慶幸老闆願意幫助他,在他這麼年輕就找出這些問題,最後C君在開完會後,跟自己支援的經理與工程師道歉,並且提出以後預估時程時,會列出系統部署的時間。
老闆突然在開會時,告訴C君自己所聽到其他經理敘述的事情「程式C君都測試過了,C君說都沒有問題,可是我們執行都出現問題!」,並且告訴C君平哥離開的原因,是因為這樣而導致合作不愉快,C君很慶幸老闆願意幫助他,在他這麼年輕就找出這些問題,最後C君在開完會後,跟自己支援的經理與工程師道歉,並且提出以後預估時程時,會列出系統部署的時間。
2010年8月12日 星期四
2010年7月26日 星期一
SSRS匯出Excel格式的問題
SSRS匯出Excel會跑版,報表在PDF格式是一頁,結果在Excel預覽列印時會變成兩頁,就算是欄位很少的報表也是一樣,與同事討論之後,發現可以使用UNIX裡的Pipe概念,SSRS的輸出是NPOI的輸入,最後再輸出至前端,相當於都讓SSRS做格式的輸出,最後請NPOI調整Excel的設定,要不然就只能使用其他軟體廠商開發在SSRS上面的Render元件,或是自己重寫某個Render。
以下的程式碼是NPOI如何接收SSRS輸出的程式碼。
[MSDN Magazine]Display Your Data Your Way with Custom Renderers for Reporting Services
How to Change the Default Rendering on SSRS
以下的程式碼是NPOI如何接收SSRS輸出的程式碼。
byte[] bytes = ReportViewer1.ServerReport.Render(
"Excel", null, out mimeType, out encoding, out extension,
out streamids, out warnings);
MemoryStream msExcel = new MemoryStream(bytes);
HSSFWorkbook workbook = new HSSFWorkbook(msExcel);
[MSDN Magazine]Display Your Data Your Way with Custom Renderers for Reporting Services
How to Change the Default Rendering on SSRS
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地图① - 深蓝色右手 - 博客园
2010年7月16日 星期五
Silverlight 版本的線上小畫家-ScrollViewer的捲軸
現在有個新的需求,使用者希望建立或移動小畫家上面的物件時,捲軸也能夠跟著移動,這樣操作起來比較人性化。
//向右移
if (e.GetPosition(ImageViewer).X > ImageViewer.ViewportWidth - 10)
{
if (ImageViewer.HorizontalOffset != ImageViewer.ScrollableWidth)
{
double doubleHorizontalOffset = ImageViewer.HorizontalOffset;
if (doubleHorizontalOffset + 10 <= ImageViewer.ScrollableWidth)
{
doubleHorizontalOffset += 10;
ImageViewer.ScrollToHorizontalOffset(doubleHorizontalOffset);
}
else
{
ImageViewer.ScrollToHorizontalOffset(ImageViewer.ScrollableWidth);
}
}
}
訂閱:
文章 (Atom)