顯示具有 97360961 林永祥 標籤的文章。 顯示所有文章
顯示具有 97360961 林永祥 標籤的文章。 顯示所有文章

2010年1月12日 星期二

HW5


HW5:讀出 GIF 檔案中的調色盤資料顯示,針對調色盤色彩之亮度做排序
這個作業自己感覺上不是很會寫,直接照老師給的範例修改,也不知道那是什麼意思,
老師有的物件放上去名子改一下這樣,只知道後面排序用sort去比大小。

HW6


上面是按下撥放鍵之前
上圖是按下撥放鍵後
作業六:將 WAV 檔頭資料顯示出來 這次作業很簡單,
幾乎是跟第三次作業也差不多的題型,只是做成讀wav檔,

老師教了一個不同讀file大小的方法
不用
iFileSize = bSize[0] + bSize[1]* 256 + bSize[2] * 256*256 + bSize[3] * 256*256*256+8;
而是用
unsigned int cB[1];
int FileSize; fseek (file,4,SEEK_SET) ; fread(cB, 4, 1, file); FileSize = cB[0];
這類的讀法,可以不必上面那個乘來乘去的,又方便讀

做這程式遇到的難題是要怎麼撥放檔案讓他有聲音呢?
老師提示:System裡的MediaPlayer
不過沒用過該怎麼用勒?
開始google,,好多篇文章,之後看到一篇ppt,馬上下載下來看
剛開始好多廢話,拉到MediaPlayer這個地方,好多語法,不管了隨便貼
奇怪??為什麼編譯後MediaPlayer按鈕都沒亮呢?一直翻,最後一頁
撥放範例:
 MediaPlayer1->FileName = OpenDialog1->FileName;  
 MediaPlayer1->Open();

原來這麼簡單........

再來是檔頭部分,看維基百科,檔頭資訊好少,在去搜尋一下,有很多關於wav檔的東西,依靠著這些網路上的資訊,實在讓人驚嘆,網路世界裡也有好多老師阿,
當然
這作業就很順利的完成囉~

不過還是有一樣問題,就是我讀出來的東西 只要是文字部分後面就會有"?"
數字就沒有,讓我很疑惑,不知道如何解決!!!

HW4



  這次與HW3的是差不多的,只是換成要讀取BMP檔裡面的每一點的值且顯示出來。
還有fopen,freed,fseek讀取RGB。
  剛開始在想LoadFromFile跟單純fopen去讀每一點的值差在哪,發現用後面這方法,多了一點東西,多了這fopen難度多了一些,老師說過之前我們學C語言程式設計時,沒有教到這些東西,所以現在在來學,我覺得多學一點東西是對自己有幫助的,當然不亦樂乎。
  這次作業第一次想到的是去讀每一點的值,程式做出來了,但是他讀好慢,之後老師有教一個ScanLine一次讀取一列的方法,好像快上許多,不過為了趕快交作業,有成品就趕快教出來囉!!

  用下面:從右下角讀上來瞄點,若由上往下圖會上下顛倒
 for(i=0;i
  {
 fseek (imBMP,offset,SEEK_SET);
 fread (bSize, 1, 3, imBMP);
 offset+=3;
 Image1->Canvas->Pixels[i][j]=(TColor)RGB(bSize[2],bSize[1],bSize[0]);
 }
  
從哪個點開始讀為什麼會顛倒,這問題想好久,後來就亂試,終於試到了,就把它相反一下
想不到就好了,之後問同學才知道
RAW檔儲存的順序是圖片的左下角到右上角!!!
  大概是插這幾列程式碼,其餘的大部分都跟第三次作業一樣!!
所以只要解決這一項,就差不多完成了,但是我有必要在去練習一下,
如何用
ScanLine來做,不然以後去職場遇到像素大一點的圖還在那邊一點一點讀,老闆都等到長白髮了。

 <不過已經把拍的圖存成JPG檔了,上傳還是好慢阿阿~不過把圖用小畫家切一下快很多>



HW8

  數位媒體概論這門課,原先是因為資訊工程系的系上規定,必須把各核心修過一門,才能夠拿到畢業證書,又看到"數位媒體",這四個字,「恩,好像還蠻有趣的,就修這門課」,


  剛開始上課的時候,跟我原本對於這門課的想法有點不一樣,原本以為"概論"是跟計算機概論那種課一樣,講課本上的東西,想不到也是要用到程式設計,剛好我對於程式很有熱忱,雖不是很厲害,但還過得去,於是更增加了我對這門課的興趣了,


  這門課跟我們資料結構所使用的程式設計軟體是一樣的” Borland C++Builder 6”,算是兩門課可以互相輔助,我覺得在數位媒體概論這門課當中可以讓我學到很多關於C++Builder的物件使用方法,很實用,平常如果沒有用到的話有些C++Builder內建的物件,有可能連碰都不會碰,這門課讓我對於C++Builder更為上手了,


  而且老師的教學方法很特別,跟其他老師很不一樣,其他老師可能只是在台上教一教,偶爾下台看看同學有沒有偷睡覺這類的,可是老師卻是跟同學們很貼近,變得老師好像跟同學一樣,也跟大家的互動很多,也是適時的丟出問題給我們想,這樣的上課方式很好,至少有些東西是要自己想過,才是自己的,


  那本書,對就是那本又大又黑又重的C++聖經,帶了整個學期,數位媒體概論的最後一天最後一堂,我...就剛好沒帶到沒加到分,哈哈自己都偷笑了,很謝謝老師幫我們訂購了那本書,那本書真的很有用,而且別人看到就覺得自己很厲害一樣,遇到不懂得翻一下那本就解決了,一學期過的真快,到了學期末了,希望以後還有機會上到老師的課囉~

2009年11月5日 星期四

HW3


這個跟今天要交的作業大同小異,只不過差在於showmessage改成label顯示而已,所以大致來講程式碼是沒有差別的,有之前的經驗,這次作業作的特別的輕鬆,這次跟我上次交的作業多了顯示垂直與水平之解析度,(bSize[0] +bSize[1] * 256 + bSize[2] * 256*256 + bSize[3] *256*256*256)/39.37,原本沒有除以39.37都顯示0,老師講解過後改了程式碼,還是出現0,後來發現好像不能用螢幕截圖,換了張圖片後,他終於顯示出來了,我比較有困惑的是....為什麼螢幕截圖出來的解析度不能顯示出來,又或者是我的程式碼的問題?! 希望老師或其他知道的同學可以幫忙一下,感激不盡~~

2009年11月4日 星期三

HW3






這次的作業真的不大好理解,還好有老師上次的程式碼,不過好像照著複製貼上,不能編譯,所以弄了很久搞不出來,直到問了些同學,才知道,不過還不大清楚,因為上次好像不夠認真上課,而且有點陷入昏迷的狀態,不過真的覺得只要有用心聽老師講,其實老師的作業是很簡單的,希望以後上課別在昏迷了,期許!!! 有些像是c++的開檔那些大一沒有學過,然後瀏覽了一些網頁還是不懂,點了F1也是一樣,看了老師一一講解,最近上資料結構的時候老師也有提到,終於有點懂了。重點就是認真認真啦!!! 剛剛把全部把檔案存成bmp檔上傳之後才想到老師說要變成jepg檔,全部刪掉重傳~

2009年10月21日 星期三

上次上課確實也點不夠專心,也不大懂老師要的是什麼,但後來問過同學後,覺得其實並非想像中的那麼有難度,但是還是需要想一下,現在終於可以學到用那麼簡單的方法就可以輕而易舉的把照片轉成灰階,好開心阿

2009年10月8日 星期四

HW1


上面是使用介面
MainMenu1上File-Open、Save,、Set-Color、、Help-說明-作者-離開
Open語法:
OpenPictureDialog1 -> Execute();
Image1 -> Picture -> LoadFromFile( OpenPictureDialog1 -> FileName );
Save語法:
AnsiString as;
as = ChangeFileExt(SavePictureDialog1->FileName,".BMP");
if(SavePictureDialog1 -> Execute())
{
Image1 -> Picture -> SaveToFile( SavePictureDialog1 -> FileName );
ShowMessage(OpenPictureDialog1->FileName + " Saved to " + as);
}
Color語法:
ColorDialog1 -> Execute();
Image1 -> Canvas -> Pen -> Color = ColorDialog1 -> Color;
另外設計一個說明選項方便使用者上手:
ShowMessage("Step 1. 先從File中Open...挑選出最喜愛的圖檔且為BMP格式!!");
ShowMessage("Step 2. 右鍵點選為設定初始座標、左鍵點選為以初始座標至目前點選座標兩點取一直線!!");
ShowMessage("Step 3. 滑鼠中鍵顯示目前鼠標所在位置顏色");
ShowMessage("Set中Color可改變畫筆顏色");
作者語法:
ShowMessage("數位媒體概論作業一 Ver9.0 Beta \n \n by 97360961 資工二乙林永祥");
離開語法:
Close();

Click按鈕則是點選後出現"HELLO"

左下角有X,Y座標與R,G,B所佔比重
Label1 -> Caption = AnsiString(X);
Label2 -> Caption = AnsiString(Y);
Label3 -> Caption = AnsiString(GetRValue(Image1->Canvas->Pixels[X][Y]));
Label4 -> Caption = AnsiString(GetGValue(Image1->Canvas->Pixels[X][Y]));
Label5 -> Caption = AnsiString(GetBValue(Image1->Canvas->Pixels[X][Y]));

畫線:
if(Button == mbRight)
Image1->Canvas->MoveTo(X,Y);
if(Button == mbLeft)
Image1->Canvas->LineTo(X,Y);

點滑鼠中鍵可得目前鼠標所在位置顏色:
if(Button == mbMiddle)
Panel1->Color=RGB(GetRValue(Image1->Canvas->Pixels[X][Y]),
GetGValue(Image1->Canvas->Pixels[X[Y]),GetBValue(Image1->Canvas->Pixels[X][Y]));

上面維修改後在儲存過後的圖


上面是原圖

這次作業像是簡易版的小畫家,做起來蠻有趣的,不過BCB全都是英文,按個F1找指令還是看不懂,要學好程式之前,英文也要精進,不然會打程式卻敗在英文看不懂,數位媒體概論真的是一個很好玩的科目。