顯示具有 96361133 李品翰 標籤的文章。 顯示所有文章
顯示具有 96361133 李品翰 標籤的文章。 顯示所有文章

2010年1月15日 星期五

HW7

這一次作業是要做調整MediaPlayer播放音樂的音量MediaPlayer並沒有這種功能所以我們必須要

自己手動利用其他API來完成如: waveoutsetvolume
waveoutsetvolume這個API式來控制WINDOWS裡的主音量

再利用BCB元件TrackBar和Edit來完成這個作業

程式碼主要是:

void __fastcall TForm1::FormCreate(TObject *Sender)
{
DWORD volume;
TrackBar1->Max=100;
TrackBar1->Position = waveOUTGETVolume(0, &volume);
TrackBar1->Position = LOWORD(0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TrackBar1Change(TObject *Sender)
{
int value = (TrackBar1->Position);
Edit1->Text=value;
waveOUTSETVolume(0, MAKELONG(value, value));
}
//---------------------------------------------------------------------------

這是在網路上看到的範例

TrackBar1->Max=100;
TrackBar1->Position = waveOUTGETVolume(0, &volume);
TrackBar1->Position = LOWORD(0);
這三行是先將TrackBar1設定最定最大最小的範圍和程式一打開的音量多少!!

int value = (TrackBar1->Position);
Edit1->Text=value;
waveOUTSETVolume(0, MAKELONG(value, value));
這三行則是隨著TrackBar1的移動來調整作業系統主音量來完成調整音量的效果!!!

基本程式碼就這樣完成了!!




HW6




這一次作業是利用BCB裡的一個叫做MediaPlayer的元件將WAV檔撥出來並且讀出標頭內資料

基本上跟讀圖的檔頭差不多配合著WIKI裡的RIFFWAV的格式讀出表頭然後再顯現在LIST裡就可以了!!!這裡有WIKI的連結:RIFFWAVE格式





上面兩張圖是完成圖和對應的圖

利用
MediaPlayer1->FileName;
MediaPlayer1->Open();
MediaPlayer1->Play();
fread 和 fseek 等就可以完成撥放和讀資料

MediaPlayer這個元件也可以播放mpg等的影片檔再配合panel就可以播放

如果沒有panel他會另外自己生成一個視窗撥出!!!

這樣就完成拉!!!

HW8

這學期修數位媒體概論讓我瞭解了很多圖的知識,也學到了新的視窗程式語言BCB的語法和寫程式技巧。

雖然在學習的過程中有點挫折

但是也讓我學了不少東西!畢竟失敗為成功之母呀!

但我還真很喜歡寫程式我可以為了程式花好多天晚上研究到可以不睡覺

但是我真不喜歡寫部落格阿!

因為感覺很麻煩也很不實際!

雖然寫部落格可以將問題和心得打在上面跟大家分享很棒

但是這種交作業方式也造成了許多專注於寫程式但不太善於將自己的問題表達出來的人的困擾

也衍生了一個問題就是這門課到底是注重程式還是說話能力呢??

難道寫了兩三天的程式所獲得的收穫要因為不會表達而打了折扣嗎??

或是明明不會寫程式但卻可以因為花一兩個小時或幾分鐘寫心得報告而獲得提高分數的機會呢!!

不可否認表達能力是不可忽視的藝術但是我認為不應該用於這門科的評分標準!!

HW5





這一次作業是將GIF檔解析標頭將裡面的調色盤畫出來,只要熟讀HW4讀BMP標頭的程式就可以做完!!!


一開始我先用PSPAD看GIF裡的標頭裡的東西裡面的資料就代表RGB的資料,只要能配合WIKI裡的GIF標頭資料表把裡面的東西讀出來在畫在IMAGE上就大功告成了!!!




這張圖是將標頭裡調色盤的RGB值畫成方塊在IMAGE上的圖還未排序的。


這一張圖是利用氣泡排序法將(crPalette[k].bRed + crPalette[k].bGreen + crPalette[k].bBlue) 這個指令取出的值座大小排序在畫到IMAGE上!!!
做完就大功告成了!!!比之前的多了一些東西但其實難易度是沒什麼大改變得只要不看錯標頭的格式花點小功夫都可以上手

2009年12月2日 星期三

HW4

此次程式作業一張 BMP 影像,利用pspad 將其擺放色彩值的位置找出來並將影像內容顯示於 image中。
其中面對不少讀取BMP檔案問題,最重要的事我不太會看psapd耶!!!
問了同學看法之後再利用老師的範例程式很快就瞭解完成
此次作業用到了結構struct方式宣告這是為了之後用來檢視檔案的原始內容所做的!!!

2009年11月6日 星期五

HW3


1.程式原型
2.最後成果
利用fopen,fseek,fread等程式和bSize[0] +bSize[1] * 256 + bSize[2] * 256*256 + bSize[3] 再加上
bmp檔頭表就可以做出讀取bmp檔資料,一開始覺得很難但輟的過程中其實動作一直重複只是要注意每一個資料的byte數以免讀取錯誤,水平和垂直的解析度還需要再除39.37才能得到一公尺有多少bpi數 (dot per inch)








2009年10月22日 星期四

HW2



本次作業是將一張24bit的彩色圖轉為灰階
所執行的結果,就是下圖所呈現的!上圖為介面圖示
上課所說的兩公式我把他抄了一下來
(R+G+B)/3  and  0.299*R+0.587*G+0.114*B
我採用的是 0.299*R+0.587*G+0.114*B
因為接兩樣都測試後發現(R+G+B)/3出來的結果比較黑顏色上區也別比較少
然後再利用for迴圈來一個一個pixel 轉為灰階下為部分程式碼
ProgressBar1->Position=0;
for(int x=0;x<=Image1->Picture->Bitmap->Width;x++)
{
for(int y=0;y<=Image1->Picture->Bitmap->Height;y++)
{
int color=0.299*GetRValue(Image1->Canvas->Pixels[x][y]) + 0.587*GetGValue(Image1->Canvas->Pixels[x][y]) + 0.114*GetBValue(Image1->Canvas->Pixels[x][y]);
Image2->Canvas->Pixels[x][y]=RGB(color,color,color);

}
ProgressBar1->Position++;
}
另外我還有加上進度表示軸ProgressBar1
以免在執行的時候像當掉一樣
但有一個小問題就ˋ當我執行完時假如image的大小比原圖小就會超出範圍不會自動縮小
試了好幾次都沒成功這還有待研究!!!


2009年10月8日 星期四

HW1


這是我做這次程式的完成樣子!!!
這張圖是用OPENDILOG函數開圖的情形

這式滑鼠跑到Image上時會出現紅綠藍三原色的pixel值和所在的xy位置,當按右鍵時會將所在的顏色呈現在panel上()程式碼如下



這張圖是幫筆換色原先比的顏色我再Fromcreate裡先設定成黑色了

最後一張圖就是按左鍵在圖上畫出線條!!!完成!!!

感覺比其他程式語言好用多!!!對於圖像呈現的程式來說BCB不錯的選擇只要懂得要拿哪個元件來用了話,再加入少許程式碼就能完成其他程式語言冗長程式才能做的事情!!