Wednesday, January 10, 2007

數位媒體概論--期末小專研

最後還是選擇了簡易的桌布產生器,雖然沒有其他美工軟體的功能強大,但是這個東西只需要操控滑鼠點幾下就可以輕易的作出[合成]或者[融合]的效果!!

[第一頁跟第二頁都用於圖片的處理]

[↑圖A↓圖B]


[↓第三頁則是針對兩張被選出來圖片(100*100)製作一些特效]

[↓第四頁則是針對桌布本身作設定以及存檔]


--------------------謎樣的分隔線--------------------

[心得與感想]

老實說,我用的都是上課教過的東西,所以在程式碼輸入結合的過程中並沒有什麼太大的困難,唯一卡的比較久的是在一開始介面的處理。我承認這個桌布產生器仍有可以改進的地方以及還有很多可以增加的功能,當初會想做這個真的是因為自己有時候會很想設計一個屬於自己的桌布,但偏偏跟美工軟體非常的不合,這樣的心情下加上這學期的學習,便衍生出依賴程式來幫忙處理圖片的想法。

這個程式就是那個想法的結果。

[其他的構想]

關於這個桌布產生器,其實我後來有想到一些可以改進的地方以及可以增加的功能,但礙於不想在期末交出一個沒有完成的作品,於是先做了這個「桌布產生器Beta 1.0版(暫定)」<-亂取的XD至於可以增加的功能則是(括弧內為作者心聲補充):

  1. 自由調整選取的大小(不再是100*100)
  2. 自由調整桌布背景顏色(RGB由使用者輸入) <-更困難的就是作調色盤 XD
  3. 簡易小畫家功能於Image1(咦,越來越美工軟體了...orz)
  4. 增加使用說明文件(如何從BCB裡叫文件檔啊= =?)

初步會以自由調整[合成A,B圖大小]以及[桌布背景顏色]為主,其他有想到什麼功能再陸續加上去!

Wednesday, December 20, 2006

數位媒體概論--1214

從這週開始,進入了一個全新的課題。
老師要我們思考一個主題,從1214起到0111(?)止,
用這學期所學的東西去思考一個主題,用力的搞定它。

我努力的思考我們所學過的東西
1.塗鴉版
2.I puzzle(拼錯?)
3.watermaker
4.照片的疊合、混合
5.去背景
...etc
想著如何用這些東西做出一個東西來
因為我這個人很龜毛,不太想做"市面上有的"的"簡易版本"
所以光是主題的選擇就出現一個大問題。

後來思索了幾樣東西

[First one]
我想做跟圖片(照片)處理有關的東西,
一個project裡面做多方延伸處理。
(但是我寫的程式都只會讀.bmp的檔案....orz)

目前有一個構思是簡易的桌布製作器,
一個最大的Image是Canvas,(最好是能讓使用者調整背景顏色)
另有幾個Image可以不斷open,(可能需要兩個以上)
需要一些ScrollBar來做數值的調整,
(把兩個圖片(or以上)做不同比例疊合、或是渲染)

可以在大Image裡自由選擇Rect的位置,
有一個很大的缺點是不知道怎麼把小圖放大...= =...
因為.bmp的檔案是由pixels組成的....
我目前也只會用for copy每個pixel 囧

[Second one]
因為 現在洗一吋跟二吋照片很貴,
而當初照相時,店家應該會給消費者底片,
做一個程式可以把一吋or二吋的照片乘以n張放到6*4的照片內,
如此一來就可以幫忙省錢。

一組兩吋(or一吋)的照片要90元(也才6~8張),一張6*4的照片也才5元=.=
如果可以把那隻程式弄得更漂亮一點(續上週作業)
這樣的話以後洗照片都可以省下80~85元耶!!!

大致上是這些構像,還有可能會更動。

Wednesday, December 06, 2006

數位媒體概論--1207(身份證照)

[執行前的介面]

[執行後的畫面]

本週的課題是,製作身分證照片。
利用BCB的一些小程式就可以獲得解答,
另存檔案的問題也在今天獲得解決。

//------------改變背景就靠這個啦--------
 int R , G , B , x , y ;
  for (x=0;x<112;x++){ y="0;y<144;y++){" r="GetRValue(Image1-">Canvas->Pixels[x][y]);
    G=GetGValue(Image1->Canvas->Pixels[x][y]);
    B=GetBValue(Image1->Canvas->Pixels[x][y]);
    if ( (R>150) &&amp;amp;amp; (G>150) && (B>150) )
    {
     R=255; G=255; B=255;
     Image2->Canvas->Pixels[x][y]=(TColor)RGB(R,G,B);
    }
    else
    {
     Image2->Canvas->Pixels[x][y]=(TColor)RGB(R,G,B);
    }
   }
  }
//------------------------------------

//--------乘以八張就靠這個啦------------
 int R , G , B , x , y ;
  for (x=0;x<112;x++){ y="0;y<144;y++){" r="GetRValue(Image2-">Canvas->Pixels[x][y]);
    G=GetGValue(Image2->Canvas->Pixels[x][y]);
    B=GetBValue(Image2->Canvas->Pixels[x][y]);
    Image3->Canvas->Pixels[x][y]=(TColor)RGB(R,G,B);
    Image3->Canvas->Pixels[x][y+144]=(TColor)RGB(R,G,B);
    Image3->Canvas->Pixels[x+112][y]=(TColor)RGB(R,G,B);
    Image3->Canvas->Pixels[x+112][y+144]=(TColor)RGB(R,G,B);
    Image3->Canvas->Pixels[x+224][y]=(TColor)RGB(R,G,B);
    Image3->Canvas->Pixels[x+224][y+144]=(TColor)RGB(R,G,B);
    Image3->Canvas->Pixels[x+336][y]=(TColor)RGB(R,G,B);
    Image3->Canvas->Pixels[x+336][y+144]=(TColor)RGB(R,G,B);
   }
  }
//------------------------------------

//---儲存檔案
 if (SavePictureDialog1->Execute())
 {
  Image3->Picture->SaveToFile(SavePictureDialog1->FileName);
}

//-----

數位媒體概論--1130(蓋章)


本週的課題是把圖做類似watermacker的東西,
上圖中有一大一小圖,以大圖做抵,把小圖做蓋章印到大圖上,
算是宣示這張圖為[my name]所擁有的。

我們學的這種有防止複製的阻嚇效果,
其實還滿好奇要怎麼做那種別人看不見的:p

學了兩三週的圖片合成製作...其實突然有個疑惑耶!!
要怎麼把合成的圖拿出來存檔啊??
我之前都用print screen...可是print screen不是一個很好的辦法,
要多一個步驟,而且總覺得圖片會有失真的感覺...(._.?)

數位媒體概論--數位內容學院月刊

[讀書心得感想]

「閱讀的維新運動」--數位時代的活字印刷術。

中國人的知識,從一開始的壁畫、竹簡一直到紙張發明後的書本,
一路傳承下來,對於文化進步最大的貢獻非活字印刷術莫屬。

從活字印刷術發明開始,書本的大量印製,讓知識廣為流傳。

如今,書本的存在受到了數位時代的挑戰。
電子書的發明,將會把書本的歷史帶來一個莫大的震撼。

我之所以會對這篇感到好奇,是因為我是一個很喜歡看書的人。
每次出門,身邊總是不忘待一本書。小說也好,雜誌也好,
在搭車、等人的過程中,書本一直是陪伴著我的好朋友。

然而,不論紙張有多輕,當它形成一本書時就會有所謂的重量跟體積,
有時書帶的少,看太快就會沒事做;書帶的多,對自己也是一種負擔。

電子書正是解決我的困擾的好東西。
不過電子書的普及化,以及一些版權啊什麼的設定,看來會是一個很大的問題。
況且每個人對於電子書的定義以及構想都不太一樣,如果將來出現多樣式的電子書,
如何挑選自己所想要的也是一個很大的問題。

不過,在它普及化前還是先別想那麼多好了,
先期待電子書的出產,以及我拿到電子書的那天囉!!

Friday, December 01, 2006

數位媒體概論--1116的課題



//---------------------------------------------------------------------------

#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int R1 , G1 , B1 , x , y , R2 , G2 , B2 ,R , G , B;
for (x=0;x<300;x++){ y="0;y<300;y++){" r1="GetRValue(Image1-">Canvas->Pixels[x][y]);
G1=GetGValue(Image1->Canvas->Pixels[x][y]);
B1=GetBValue(Image1->Canvas->Pixels[x][y]);
//讀取第二章圖RGB
R2=GetRValue(Image2->Canvas->Pixels[x][y]);
G2=GetGValue(Image2->Canvas->Pixels[x][y]);
B2=GetBValue(Image2->Canvas->Pixels[x][y]);

R=(R1+R2)/2;
G=(G1+G2)/2;
B=(B1+B2)/2;

Image3->Canvas->Pixels[x][y]=(TColor)RGB(R,G,B);

}
}

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
 int R1 , G1 , B1 , x , y , R2 , G2 , B2 ,R , G , B;
 for (x=0;x<300;x++){ y="0;y<300;y++){" r1="GetRValue(Image1-">Canvas->Pixels[x][y]);
  G1=GetGValue(Image1->Canvas->Pixels[x][y]);
  B1=GetBValue(Image1->Canvas->Pixels[x][y]);
  //讀取第二章圖RGB
  R2=GetRValue(Image2->Canvas->Pixels[x][y]);
  G2=GetGValue(Image2->Canvas->Pixels[x][y]);
  B2=GetBValue(Image2->Canvas->Pixels[x][y]);
 
  R=(3*R1+R2)/4;
  G=(3*G1+G2)/4;
  B=(3*B1+B2)/4;

  Image3->Canvas->Pixels[x][y]=(TColor)RGB(R,G,B);

  }
 }

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
 int R1 , G1 , B1 , x , y , R2 , G2 , B2 ,R , G , B;
  for (x=0;x<300;x++){ y="0;y<300;y++){" r1="GetRValue(Image1-">Canvas->Pixels[x][y]);
   G1=GetGValue(Image1->Canvas->Pixels[x][y]);
   B1=GetBValue(Image1->Canvas->Pixels[x][y]);
   //讀取第二章圖RGB
   R2=GetRValue(Image2->Canvas->Pixels[x][y]);
   G2=GetGValue(Image2->Canvas->Pixels[x][y]);
   B2=GetBValue(Image2->Canvas->Pixels[x][y]);
 
   R=(R1+3*R2)/4;
   G=(G1+3*G2)/4;
   B=(B1+3*B2)/4;

   Image3->Canvas->Pixels[x][y]=(TColor)RGB(R,G,B);

   }
  }

}
//---------------------------------------------------------------------------
void __fastcall TForm1::ScrollBar1Change(TObject *Sender)
{
int R1 , G1 , B1 , x , y , R2 , G2 , B2 ,R , G , B;
 for (x=0;x<300;x++){ y="0;y<300;y++){" r1="GetRValue(Image1-">Canvas->Pixels[x][y]);
  G1=GetGValue(Image1->Canvas->Pixels[x][y]);
  B1=GetBValue(Image1->Canvas->Pixels[x][y]);
  //讀取第二章圖RGB
  R2=GetRValue(Image2->Canvas->Pixels[x][y]);
  G2=GetGValue(Image2->Canvas->Pixels[x][y]);
  B2=GetBValue(Image2->Canvas->Pixels[x][y]);

  int test=ScrollBar1->Position;
  if (Position==50)
  {
  R=(R1 * test + R2 * test)/100;
  G=(G1 * test + G2 * test)/100;
  B=(B1 * test + B2 * test)/100;
  }
  else if (Position>50)
  {
  R=(R1 * test + R2 * (100-test))/100;
  G=(G1 * test + G2 * (100-test))/100;
  B=(B1 * test + B2 * (100-test))/100;
  }
  else if(Position<50) r="(R1" g="(G1" b="(B1">Canvas->Pixels[x][y]=(TColor)RGB(R,G,B);

  }
 }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
 int R1 , G1 , B1 , x , y , R2 , G2 , B2 ,R , G , B;
  for (x=0;x<300;x++){ y="0;y<300;y++){" r1="GetRValue(Image1-">Canvas->Pixels[x][y]);
  G1=GetGValue(Image1->Canvas->Pixels[x][y]);
  B1=GetBValue(Image1->Canvas->Pixels[x][y]);
  //讀取第二章圖RGB
  R2=GetRValue(Image2->Canvas->Pixels[x][y]);
  G2=GetGValue(Image2->Canvas->Pixels[x][y]);
  B2=GetBValue(Image2->Canvas->Pixels[x][y]);

  R=(R1 * (300-x) + x * R2)/300;
  G=(G1 * (300-x) + x * G2)/300;
  B=(B1 * (300-x) + x * B2)/300;

  Image3->Canvas->Pixels[x][y]=(TColor)RGB(R,G,B);

  }
 }
}
//---------------------------------------------------------------------------
套用這支程式,就可以把自己的照片+另一張圖片做出類似浮水印的效果

數位媒體概論--About數位相機(at 2006.11.15)

[關於ISO]
感光度
一般數位相機的 ISO 值約介於 100 至 800 之間
ISO 值是用來表示傳統相機所使用底片的感光度。
所謂軟片感光度,是指軟片對於光線的敏感度。當
ISO數值愈大時,感光度就愈大。通常我們拍照用的是
ISO 100度軟片,適用於一般光線較充足時的攝影
由於感光度較高,適合微光中、動態下使用。
而數位相機 ISO 值,則是標示其測光系統所採用的
曝光基準,相當於傳統相機多少感光度的底片。
因此,ISO 值越低所需的曝光量則越高;反之,
ISO 值越高則所需的曝光量越低。但需要注意一點的是
,感光度越低所拍出來的畫質越細膩;越高畫質越粗糙,
但在夜間攝影或室內攝影中光線可能會不足,消費者可
以依照當時環境不同而調整相機 ISO 值。

[關於光圈]
光圈的是一組製作在鏡頭裡面可以活動的葉片,藉由控制
葉片開合的大小,就可以控制光線在一定時間內,進入
相機內光量的多寡,即為光圈。此開孔會隨著鏡頭上f
值做調節而開大或縮小,f值小則光圈孔大.f值愈大則
光圈孔愈小。

[關於快門]
快門是一組做在相機機身內的一個裝置(有些中、大型
相機的快門是做在鏡頭上),用來控制光量進入底片的
感光時間的長短,並且會影響畫面的動感。

[光圈與快門的搭配]
一般而言,光圈越大,景物清楚的範圍就會越小,背景
就越模糊,拍攝的主體較有立體感,主題也更為明確。
而快門速度愈慢,所拍攝的影像會呈現動感。欲將運動
中物體拍攝成定格影像,則要用快速快門,如1/2000秒。
當然快門速度的應用不只如此,但基本上一張好的照片,
先決條件為適切的曝光量。而拍攝照片時,光圈與快門要
相互配合才能獲得適切的曝光量。

[其他]
光是了解上面幾樣就快暈頭了...="=

數位媒體概論--第八次上課(at 2006.11.09)



Image2->Canvas->CopyRect(Rect(0,0,150,150),Image1->Canvas,Rect(0,0,150,150));
int R , G , B , x , y ;
for (x=0;x<300;x++) y="0;y<300;y++)" r="GetRValue(Image1-">Canvas->Pixels[x][y]);
G=GetGValue(Image1->Canvas->Pixels[x][y]);
B=GetBValue(Image1->Canvas->Pixels[x][y]);
Image3->Canvas->Pixels[x][y]=(TColor)RGB(R,0,0);
Image4->Canvas->Pixels[x][y]=(TColor)RGB(0,G,0);
Image5->Canvas->Pixels[x][y]=(TColor)RGB(0,0,B);
}
} //全部放在同一個按鈕裡,就可以一次全部轉色


接著要試著做的就是把RGB值改成長條圖出來~
提示:MoveTo , LineTo


[心得感想]
耶!不知道為什麼這次上課會提到數位相機~~
要不是老師剛好提到關於數位相機的一些事情,
或許我一直到二年級結束,都還不了解自己的相機呢!


提到相機,都差點把這次上課的重點給忘了!
這次上課的重點是...把圖檔的RGB分別讀取出來!
接著老師要我們試著把該圖的RGB還有黑白平衡的東西拿出來玩玩看,
不過很可惜的是,我目前只能做到把Photo Shop拿出來玩而已.../___我還沒把長條圖給研究出來 囧\

數位媒體概論--第七次上課(心得感想)(at 2006.11.8)

這次上課探討的,是怎麼移動那個圖片,
每個人移動圖片的方式都不太一樣。

有上台講解的同學,他們大多是想辦法Copy內容到ImageN裡去
而李老師使用的方法則是直接把ImageN互換。

我思考的方向是每動一次就Copy一次,
結果發現越想越複雜(昏)。
後來我就試著使用李老師的想法去做作業!

最後,我發現我常常越想越複雜 想到太複雜了..=口=

數位媒體概論--第七次上課(程式碼)(at 2006.11.02)

[以下是把圖檔一打開就會把圖片割好]

----------------------------------------------------------------------------------

if(OpenPictureDialog1->Execute())
{
  Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
}
 Image2->Canvas->CopyRect(Rect(0,0,99,99),Image1->Canvas,Rect(0,0,99,99));
 Image3->Canvas->CopyRect(Rect(0,0,99,99),Image1->Canvas,Rect(100,0,199,99));
 Image4->Canvas->CopyRect(Rect(0,0,99,99),Image1->Canvas,Rect(199,0,299,99));
 Image5->Canvas->CopyRect(Rect(0,0,99,99),Image1->Canvas,Rect(0,99,99,199));
 Image6->Canvas->CopyRect(Rect(0,0,99,99),Image1->Canvas,Rect(99,99,199,199));
 Image7->Canvas->CopyRect(Rect(0,0,99,99),Image1->Canvas,Rect(199,99,299,199));
 Image8->Canvas->CopyRect(Rect(0,0,99,99),Image1->Canvas,Rect(0,199,99,299));
 Image9->Canvas->CopyRect(Rect(0,0,99,99),Image1->Canvas,Rect(99,199,199,299));
 Image10->Canvas->CopyRect(Rect(0,0,99,99),Image1->Canvas,Rect(199,199,299,299));

----------------------------------------------------------------------------------

已經可以用程式把圖片分割了
接著我想我需要思索的,是如何把圖片打散以及mov!
關於mov要參考上週的log
[後來發現那樣指定會有點小問題,所以做了點修正]
if(OpenPictureDialog1->Execute())
{
Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
}
TRect TileRect, OIRect1,OIRect2,OIRect3,OIRect4,OIRect5,OIRect6,OIRect7,OIRect8,OIRect9;
TileRect = Rect(0,0,99,99); //定義TileRect的範圍
OIRect1 = Rect(0,0,99,99);
OIRect2 = Rect(100,0,199,99);
OIRect3 = Rect(199,0,299,99);
OIRect4 = Rect(0,99,99,199);
OIRect5 = Rect(99,99,199,199);
OIRect6 = Rect(199,99,299,199);
OIRect7 = Rect(0,199,99,299);
OIRect8 = Rect(99,199,199,299);
OIRect9 = Rect(199,199,299,299);
Image2->Canvas->CopyRect(TileRect,Image1->Canvas,OIRect1);
Image3->Canvas->CopyRect(TileRect,Image1->Canvas,OIRect2);
Image4->Canvas->CopyRect(TileRect,Image1->Canvas,OIRect3);
Image5->Canvas->CopyRect(TileRect,Image1->Canvas,OIRect4);
Image6->Canvas->CopyRect(TileRect,Image1->Canvas,OIRect5);
Image7->Canvas->CopyRect(TileRect,Image1->Canvas,OIRect6);
Image8->Canvas->CopyRect(TileRect,Image1->Canvas,OIRect7);
Image9->Canvas->CopyRect(TileRect,Image1->Canvas,OIRect8);
Image10->Canvas->CopyRect(TileRect,Image1->Canvas,OIRect9);

數位媒體概論--第六次上課(2)

[補記心得感想]

上週才在網誌上打了希望能作出這個遊戲,
沒想到這週還真的繼續延伸那個遊戲的製作。

這次學到的是
1.如何copy圖片的某個區段
2.如何移動copy出來的那個區段
3.整個遊戲製圖的觀念
a.使用AutoSize跟Stretch(圖的縮放)
b.八個空格分別抓大圖的區間

還沒學到的,應該是屬於人工智慧學程的東西..(?)
像是判別這個圖能不能移動,或者是跑出結果的解答。

程式似乎在老師的引導下越寫越深了,
不過因為我對於BCB的控制還不是很了解,
所以除了思考要怎麼作出一個程式外,
還在思考怎麼使用BCB來作出自己想要的東西。

突然還是深深的覺得,如果在一開始,就有學過BCB的使用方法該有多好,
雖然說現在慢慢摸索還是有辦法能夠做出想要的東西,
但是總覺得寫程式寫的很狼狽,因為我對於BCB還不夠了解...。

數位媒體概論--第六次上課(at 2006.10.26)

備份一下今天學到的程式碼!

-------------------------------------------------------------------------
//以下放在Image1的OnMouseDown!
TRect TileRect, OIRect; //定義TileRect,OIRect為TRect的資料型態
TileRect=Rect(0,0,99,99); //定義TileRect的範圍
OIRect=Rect(X,Y,X+99,Y+99); //定義OIRect的範圍

Image2->Canvas->CopyRect(TileRect,Image1->Canvas,OIRect);
//把Image1的片段複製到Image2

-------------------------------------------------------------------------
//以下放在Image2的OnMouseDown
Image2->Top=Image2->Top+100; //滑鼠按Image2一下,他就往下跑100的座標
Image2->Left=Image2->Left+100; //滑鼠按Image2一下,他就往右跑100的座標
-------------------------------------------------------------------------
想一下Canvas跟Picture以及autosize,Stretch

數位媒體概論--第五次上課(at 2006.10.25)

[心得感想]
這次上課的內容,是關於一個小遊戲。
其實那個小遊戲在哈電族之類的東西裡常常都可以看到簡易版的,
(因為我有一台哈電族,而且我也玩過...XD)

當時的我沒有想很多,光是想著怎麼破解救很頭大,
今天的我,則是必須去思考她的運作原理。

其實光是把圖切成九份就快要把我弄到發瘋了
(然後聽說BCB有內建的語法可以方便切圖 (汗))

課堂上聽大家說了很多種關於運作原理的想法,
深深的覺得,其實知識是需要大家切磋討論,
然後再由其中去擷取最合理的想法。

最大的想法:這學期內希望能有機會靠自己些出那個九宮格的遊戲!

數位媒體概論--第四次上課(2)

[接續上一篇]

※關於AnsiString資料型態(以下引用自課本以及直觀的思考)
在C++ Builder中的字串稱為AnsiString資料型態。
1.把東西轉成AnsiString
語法:AnsiString Str=AnsiString(內容物)
◎內容物可以是:int double char ....etc
2.把AnsiString轉成其他型態的東西語法:StrTo內容物()
◎內容物可以是:Int Time Date Float....etc
此外,AnsiString也有字串處理函式,用於處理一個字串為主。

再說到本週的作業,雖然有老師的提示,
但是關於畫布(簡單小畫家),還是沒什麼頭緒,真是不好意思!

這幾天逛老師的網誌,發現到老師已經預告第五次上課內容,
點進去看,感覺上還滿有趣的!

想著老師放的那個圖片,應該是一種小遊戲吧!
突然想起大一時,因為作業的緣故,用VC++寫了一些純文字的小遊戲,
那時最嚮往的就是能寫出一個有畫面的小遊戲!
突然開始有點期待第五週的課程!

數位媒體概論--第四次上課(at 2006.10.13)


今天的課題除了延續上週的課題外,還額外增加了新的課題。

上週的課題:OnMouseDown的時候讀取圖片的X,Y,R,G,B值
本週的課題:OnMouseMove的時候,把設定的RGB值弄進圖片(Canvas)裡。

目前卡在怎麼在Canvas上面畫畫(如果直接指定RGB倒是可以成功!)

我雖然想了一些程式碼,但是是錯誤的
int a = StrToInt("Edit6->Text");
int b = StrToInt("Edit7->Text");
int c = StrToInt("Edit8->Text");
Image1->Canvas->Pixels[X][Y]=(TColor)RGB(a,b,c);

關於資料型態,我去翻了BCB的課本,發現第三章裡面就有講解很多!
不過雖然提示很多,但總覺得範例不太夠(<-不太會用b)

作業是做出一個可以畫畫(調整筆刷顏色)可以擦(橡皮擦)的東西,
不過因為我今天課堂上的東西就卡住了,
所以可能還要再一段時間才能做到作業的部分。


---------------------------------------------------------------
以下是老師在無名的回應
1."Edit6->Text" 用 " " 引號代表一個字串喔!
這樣是不行的!另外, RGB 的輸入參數資料型態都是 BYTE !
請試試看 (BYTE)(StrToInt(Edit6->Text)) !

2.我發現資料型態應該是所有學生的問題之終極根源...

數位媒體概論--第三次上課(at 2006.10.08)

本週作業:BCB 的專案儲存後, 會產生哪些不同的檔案, 分別扮演什麼功能!

這週的數位媒體概論,學的是讀圖片的X,Y座標軸以及RGB三原色的數值。

老師上課說了:「從今以後的作業,都是有相關性的。」
做了以後馬上就體會到了,因為要先用上週的把圖片叫出來,
才能進一步分析圖片的各項數值。
而我們所做的,是OnClick(也就是點一下滑鼠)才出現數值。

這時才發現,要先了解Event、Object、屬性等等的東西,才能做的又快又好。
(一開始大家還不會用Event時,還在那邊一行一行key in指令,不只麻煩,而且容易出錯)

Labeled、Edit,還有LabeledEdit,是個很妙的東西。
我曾經為了這東西頭痛了快半節課,每個Object控制的東西實在是太多了。


數位媒體概論--第二次上課(at 2006.09.29)

趁著記憶猶新,趕快來做點紀錄。
雖然個人電腦灌了BCB,但是家裡的電腦沒灌,所以關於畫面什麼的,等我回桃園再補齊。

(以當天心情補述)

今天是第二次上課,
本來以為上課時就可以拿到BCB的課本,
沒想到因為缺貨所以沒辦法拿到。

今天的課題是《做出一個開啟BMP檔案的程式》一開始,
老師沒有給什麼提示就讓我們自行思考跟討論,
還說:「要學習站在巨人的肩膀上」。

於是,第一時間想到的是李遠坤老師的blog,
過去後,雖然找到了部份提示,但仍覺得不是很理解。
後來,黃世育老師提到了另一個巨人,
我才突然想到還有過去學長們的作業可以觀摩學習。

可是隔了一個禮拜,不知怎麼搞的卻忘記要如何尋找另一個巨人(汗)
幸好還是有同學記著,並且分享了找到的東西,才開始進入這週的課題。

依照著學長的網頁做著,很快的又出現了新的問題,
雖然說大約知道要怎麼做出一個簡單的介面,
可是最重要的按鈕程式,卻不知道該從何開始。

於是我到白板上提出了問題
「要怎麼編寫按鈕的程式?」
提出問題後,就回到自己的位置上等待,
在老師鼓勵大家把問題寫出來後,
不知不覺中,白板被一堆問題佔去了一大半。
有些問題是我大概知道該怎麼解決,
有些問題是我卻不知道該怎麼解決。

幸好,在課程結束前老師耐心的跟我們解釋以及討論,
使得大部分的問題都獲得了解答。

篇末註記,這次上課最大心得:
其實我這個人還滿依賴參考資料(課本),
沒有課本可以參考,要想辦法從別的地方獲得答案實在是有點痛苦。
雖然說「盡信書不如無書」但我覺得程式這種東西,
起頭還是依賴著課本或是其他參考資料會比較容易跨出我那小小的一步。

這次程式所會用到的語法:

1. OpenPictureDialog1->Execute()
2. Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName)

數位媒體概論--第一次上課(at 2006.09.21)

在開學之前,我一直很擔心這堂課會開不成(那時的開課最低人數是20人)
在暑假時,人數一度到達跌停板,心裡一整個就是 "囧"
幸好,在開學前,人數破20,而且下限人數調整為0才一整個放心

今天是第一天上課,課本沒有,腦袋空空,什麼都沒有。
人很少,而且老師有點晚到,我一度以為這堂課可能不開了。
不開課的疑惑一直到老師來了才消除。

上課第一件事情是思考怎麼做一個檔案總管
我才發現我的思考方向跟大家怎麼總是不一樣
幸好在web 2.0 learn 2.0 teach 2.0的模式下
不論做什麼思索都能當做一個意見

今天老師share了一些感覺上還頗有趣的東西
不過...日系RPG打太多的我,覺得有些東西的圖畫如果能修飾好一點會更好...

關於C++Bulider...今天是第一次看到,不過因為我以前玩過一陣子VB
覺得C++Bulider的使用方式跟VB很像....就是點畫面+寫程式
不過參考用書使用的是C++的語法的樣子(大一是學VC++)
很好奇這種系統能寫出怎樣的程式 哈哈
也很好奇學過BCB的自己在將來能寫出怎樣的程式

關於數位媒體概論...當初選這門課的理由是因為我對於多媒體學程跟網路學程都很有興趣
如果有機會的話,希望在畢業時能夠把兩個學程的證明都拿到
而數位媒體概論,應該就是多媒體學程的入門課程,所以就選了