2009年12月13日 星期日

HW2 - 逆時針或順時針旋轉圖片(任意角度)。

又太晚PO文了...(跪)。

這是第二個作業,把圖片做逆時針旋轉,不過後來我加了個順時針旋轉的功能,以下就是旋轉後的結果:

原圖↓


逆時針旋轉30度↓


逆時針旋轉60度↓


逆時針旋轉90度↓


逆時針旋轉180度↓


順時針旋轉30度↓


順時針旋轉60度↓


順時針旋轉90度↓


  結果如上,一開始我是想用旋轉後的四個角的座標位置,來計算新圖片寬高,不過卡在四個角的旋轉計算讓我覺得有點繁雜,就停工了一段時間,後來用老師的方法,使用對角線當做新圖片的寬高,但怎麼做都做不出來,可以旋轉正確的角度,但邊界的地方卻不能吻合。後來在某個網站找到了旋轉範例,而它計算新圖片寬高的方式,剛好就是我想要的四個角的計算方法,後來再依樣畫葫蘆把逆時針旋轉的公式套用進去(它提供的是順時針旋轉的計算方式),整個範例所提供的概念算是滿好理解的,發現其實四個角旋轉後的座標計算也不是很難,只是要靜下心去依照旋轉公式推算,就可以得到自己想要的結果。

PS. 我也去找了一下BCB存檔的語法,如老師所說的不用再去截圖,真的很好用!語法如下↓

#-------------------------------------------------------------------------
if(SavePictureDialog1->Execute())
Image2->Picture->SaveToFile(SavePictureDialog1->FileName+".BMP");
#-------------------------------------------------------------------------
並要在Form拉入Dialogs的SavePictureDialog的對話方塊才能存檔唷!

1 則留言:

  1. 推底下這句:
    "整個範例所提供的概念算是滿好理解的,發現其實四個角旋轉後的座標計算也不是很難,只是要靜下心去依照旋轉公式推算,就可以得到自己想要的結果。"

    這也是我長久以來的想法, 可是可以做到的同學少之又少, 加上大部分同學回家都不練習寫程式, 進度落後一大堆, 最後只好放棄弄懂這些簡單的課程內容, 為求繳交作業, 隨便抄抄了事。這真是我們教學上的一大逆境。

    回覆刪除