BCB如何做出遮色片效果 |
尚未結案
|
seavegg
一般會員 發表:5 回覆:3 積分:1 註冊:2004-12-05 發送簡訊給我 |
|
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
seavegg 您好: 我試著模擬遮色片的效果,方法如下:
所謂的紅色遮色片,就是僅能讓紅色光部分通過,餘綠,藍色遮色片依此類推。 不過這是不是正確的方法,我不敢確定。如果有人知道真正的原理,歡迎告知! 程式連結:
< href="http://delphi.ktop.com.tw/loadfile.php?TOPICID=19145284&CC=428176">http://delphi.ktop.com.tw/loadfile.php?TOPICID=19145284&CC=428176 執行畫面:
RichTop 敬上 =====*****
把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題!
=====#####
|
seavegg
一般會員 發表:5 回覆:3 積分:1 註冊:2004-12-05 發送簡訊給我 |
引言: seavegg你好; 請問一下什麼是遮色片,是什麼原理?有什麼做用呢?沒有說清楚~ 真不好意思~ 遮色片是我照著FLASH中的元件名字說的 像是先再表單上放上一張背景圖~ 另外再放上一個圖型(EX:圓形) 然後只有在第二張圖形的範圍中第一張背景圖才會顯現~ 就像下面的圖~ 上面是原來的背景圖~ 下面是放上一圓形濾光片後的效果 如果我們把圓形向左移動一些就能看到左邊一些的背景圖~ 然而超過圓形的背景圖全被影藏了~ 發表人 - seavegg 於 2004/12/08 22:46:59 |
seavegg
一般會員 發表:5 回覆:3 積分:1 註冊:2004-12-05 發送簡訊給我 |
|
stellos
中階會員 發表:24 回覆:84 積分:51 註冊:2004-06-08 發送簡訊給我 |
下面範例希望是你要的
< class="code">
在表單上放Image1,Image2,Button1 void __fastcall TForm1::FormShow(TObject *Sender)
{
Image2->Visible=false;
Image1->Picture->LoadFromFile("test.bmp"); //256色圖案為例
Image2->Picture->LoadFromFile("test.bmp");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int x,y;
Byte *ptr1,*ptr2;
//將Image2影像清除
for(y=0;y < Image2->Height;y )
{
ptr2 = (byte *)Image2->Picture->Bitmap->ScanLine[y];
for(x=0;x < Image2->Width;x ) ptr2[x]=(Byte) 255;
}
Image2->Canvas->Pen->Color=clBlack;
Image2->Canvas->Brush->Color=clBlack;
Image2->Canvas->Ellipse(100,100,200,200);
//依照Image2對Image1做圖,(Image1大小與Image2大小一樣)
for(y=0;y < Image2->Height;y )
{
ptr1 = (byte *)Image1->Picture->Bitmap->ScanLine[y];
ptr2 = (byte *)Image2->Picture->Bitmap->ScanLine[y];
for(x=0;x < Image2->Width;x )
{
if(ptr2[x]==255)
ptr1[x]=(Byte) 255;
}
}
Image1->Repaint();
} ---
發表程式時,請依下面方式發表,謝謝合作
[code]
// BCB, Delphi 的程式碼
[/code] 發表人 - jerrykuo 於 2004/12/09 11:28:26
|
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
或是用region方式
// Bmp是原始圖,bmp1是加光罩的後圖片 Graphics::TBitmap* bmp1=new Graphics::TBitmap; byte *ptr1,*ptr2; static int mask_x = 0,mask_y = 0; //光罩位移 static int masksize_x = 100,masksize_y = 100; //光罩大小 HRGN MyRgn = ::CreateEllipticRgn(0, 0, masksize_x, masksize_y); //光罩區域範圍 bmp1->PixelFormat = pf24bit; bmp1->Width = Bmp->Width; bmp1->Height = Bmp->Height; bmp1->Transparent = true; bmp1->TransparentMode = tmAuto; for(int y=0;y |
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
引言: 或是用region方式被我抓到重覆發文喔... 【 href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=60950">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=60950 這兩個問題好像都差不多? 發表人 - jerrykuo 於 2004/12/10 13:20:08// Bmp是原始圖,bmp1是加光罩的後圖片 Graphics::TBitmap* bmp1=new Graphics::TBitmap; byte *ptr1,*ptr2; static int mask_x = 0,mask_y = 0; //光罩位移 static int masksize_x = 100,masksize_y = 100; //光罩大小 HRGN MyRgn = ::CreateEllipticRgn(0, 0, masksize_x, masksize_y); //光罩區域範圍 bmp1->PixelFormat = pf24bit; bmp1->Width = Bmp->Width; bmp1->Height = Bmp->Height; bmp1->Transparent = true; bmp1->TransparentMode = tmAuto; for(int y=0;y |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |