全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:9010
推到 Plurk!
推到 Facebook!

8bit調色盤的問題??

尚未結案
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-26 00:18:15 IP:203.70.xxx.xxx 未訂閱
請問一下我又兩張圖大小一樣,PixelFormat都為pf8bit 現在我想以ScanLine的方式讀取圖1各點的色階 然後再存回圖2,程式如下,請問為何出來的影像會不一樣ㄋ 是 > 如果是那 >多少時不用設?< > 那調色盤如何設,我知道曾經有大大分享 > 問題太多請別介意,等待大大為小弟解惑。。。< > //------------------------------- >>>>>>
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-26 22:58:32 IP:211.76.xxx.xxx 未訂閱
phorn 您好:    當改變Bitmap的PixelFormat屬性時,會導致Bitmap色彩變動。 不過不知道您所謂的影像會不一樣是什麼意思? 底下有個簡單的程式供您參考,試過後再來研究研究。 < href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=55450">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=55450 RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-26 23:38:15 IP:211.74.xxx.xxx 未訂閱
richtop 您好:    謝謝您的答覆< >以及您的程式< > 這張是Img1 這張是Img2 這就是我所謂的影像會不一樣
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-27 22:15:29 IP:211.76.xxx.xxx 未訂閱
phorn 您好:    我用您提供的圖形並沒有出現不同的現象。 修改部分程式碼,供您再試試,再不成功恐怕要看您的原始碼才能找出真正的因了。 部分程式碼修改如下: < class="code">//--------------------------------------------------------------------------- int extent=3; // default: pf24bit void __fastcall TForm1::Button1Click(TObject *Sender) { Image2->Picture->Bitmap->Width = Image1->Picture->Width; Image2->Picture->Bitmap->Height = Image1->Picture->Height; Image2->Picture->Bitmap->Canvas->FillRect(Image2->ClientRect); Image2->Picture->Bitmap->PixelFormat = Image1->Picture->Bitmap->PixelFormat; for (int y=0; yPicture->Height; y ) { unsigned char *ptr1 = (unsigned char *)Image1->Picture->Bitmap->ScanLine[y]; unsigned char *ptr2 = (unsigned char *)Image2->Picture->Bitmap->ScanLine[y]; for (int x=0; xPicture->Width; x ) { ptr2[x] = ptr1[x]; } } } //--------------------------------------------------------------------------- void __fastcall TForm1::RadioGroup1Click(TObject *Sender) { switch(RadioGroup1->ItemIndex) { case 0: Image1->Picture->Bitmap->PixelFormat = pf8bit; extent = 1; break; case 1: Image1->Picture->Bitmap->PixelFormat = pf16bit; extent = 2; break; case 2: Image1->Picture->Bitmap->PixelFormat = pf24bit; extent = 3; break; case 3: Image1->Picture->Bitmap->PixelFormat = pf32bit; extent = 4; break; } } //--------------------------------------------------------------------------- RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-27 23:13:08 IP:203.70.xxx.xxx 未訂閱
richtop 您好: 下圖是我用您提供的程式所執行的結果 這張是我的原始圖檔 麻煩您替我看看是什麼原因< >謝謝!!< >
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-27 23:51:40 IP:211.76.xxx.xxx 未訂閱
phorn 您好:    以下是我在我的電腦(WindowsXP, BCB6)上出現的執行結果。 相同的程式不一樣的結果,這難道跟七月有關??     RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-08-28 07:59:25 IP:211.74.xxx.xxx 未訂閱
richtop 您好:    不會吧!!< >我從六月就這樣了耶~~難道他們提早放假< > 我已經被這個問題搞的暈頭轉向了< > 我的電腦跟你一樣,我只有增加紅色部分時結果才會正常。 大大知道?什麼嗎< >
 
//---------------------------------------------------------------------------
int extent=4; // default: pf24bit    void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Image2->Picture->Bitmap->Width  = Image1->Picture->Width;
  Image2->Picture->Bitmap->Height = Image1->Picture->Height;
  Image2->Picture->Bitmap->Canvas->FillRect(Image2->ClientRect);
  Image2->Picture->Bitmap->PixelFormat = Image1->Picture->Bitmap->PixelFormat;
  Image2->Picture->Bitmap->Palette = Image1->Picture->Bitmap->Palette;      for (int y=0; yPicture->Height; y  )
     { unsigned char *ptr1 = (unsigned char *)Image1->Picture->Bitmap->ScanLine[y];
       unsigned char *ptr2 = (unsigned char *)Image2->Picture->Bitmap->ScanLine[y];
       for (int x=0; xPicture->Width; x  )
          { 
            ptr2[x] = ptr1[x];
          }
     }    }
//---------------------------------------------------------------------------    void __fastcall TForm1::RadioGroup1Click(TObject *Sender)
{
  switch(RadioGroup1->ItemIndex)
    { case 0: Image1->Picture->Bitmap->PixelFormat = pf8bit;
              break;
      case 1: Image1->Picture->Bitmap->PixelFormat = pf16bit;
              break;
      case 2: Image1->Picture->Bitmap->PixelFormat = pf24bit;
              break;
      case 3: Image1->Picture->Bitmap->PixelFormat = pf32bit;
              break;
    }
}
//---------------------------------------------------------------------------    
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-08-28 09:29:21 IP:221.169.xxx.xxx 未訂閱
調色盤的問題 因為左右兩張圖片對於調色盤的定義不一樣,因此儘管每個pixel的數值一樣,但解釋出來的顏色會不一樣 藉由指定第二張影像使用和第一張影像相同的調色盤的方法 (也就是你新增的那行指令) 就會使得兩張影像解釋出來的顏色是一樣的
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-08-28 11:43:52 IP:211.76.xxx.xxx 未訂閱
phorn 您好:    經過測試發現,我用的圖(包括從網頁上copy下您使用的圖(.bmp))都不是256色。於是我就改用Borland提供的256色圖檔,果然疑似的靈異現象出現了,但也有了較合理的解釋。 我參考TBitmap對Palette的說明,試驗發現在256色(含)以下時,調色盤才會被參考;而在更高顏色格式時,則直接引用pixel的內容轉換成該點的顏色,不需參考調色盤。 因此,由於之前我用的都不是256色圖檔,也就是說當我把Image1的pixels複製到Image2時,等於把所有的影像訊息完全傳了過去,這時候Image1與Image2的內容其實是一樣的,所以接下來即使我同時改變Image1與Image2的PixelFormat成pf8bit,使得它們會分別建立起屬於它們自己的調色盤,但由於兩者內容完全相同且建立調色盤的機制亦然,因此接下來它們"各自分別的變化"才會"看起來"都一樣! 參考Borland對TPixelFormat的定義: enum TPixelFormat {pfDevice, pf1bit, pf4bit, pf8bit, pf15bit, pf16bit, pf24bit, pf32bit, pfCustom}; 當圖檔顯示顏色數在256色(含)以下時,就必須設定Palette(調色盤) => PixelFormat <= 3, 否則就不必要設定Palette(調色盤) => PixelFormat > 3。    以上說明如果再輔以您所用的圖檔真的是256色的話,那問題就算是獲得解釋;否則.....?(您又說問題在六月就發生,...??...,那會不會是屈原?< >) 怎麼弄得好像柯南在推理案情一樣! 輕鬆一下,開開玩笑!< > 不過,我的測試可能不夠完整;如果有錯,也請自行測試與告知!謝謝啦! RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-08-28 22:20:27 IP:203.70.xxx.xxx 未訂閱
richtop 您好:    經過您的的解釋小弟也測試了一下< > 結果發現< >載入PixelFormat > 3 的圖檔不會發現靈異現象是因為在 Image2->Picture->Bitmap->PixelFormat = pf8bit; BCB自己將圖檔建立調色盤,由於他們的調色盤都是由BCB建立的關係, 所以結果不會有色彩不相同的狀況(調色盤相同)。 然而當載入PixelFormat <= 3 的圖檔時,由於我之前都是利用PhotoImpact 8 轉的8Bit 256色故其色盤與BCB色盤不相同,所以才會有靈異的現象發生。 這是小弟所做的小小推測< > 不知大大是否知道調色盤是一個怎麼樣的結構,如何建立< > 如何得知0~255各代表什麼樣的顏色,是如何去定義的< > 麻煩大大??我,謝謝!!< >
arisaka_matsuri
高階會員


發表:25
回覆:205
積分:231
註冊:2003-10-19

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-08-28 23:00:41 IP:220.136.xxx.xxx 未訂閱
Dear phorn: 簡單的說,當Bitmap圖檔的顏色數在256以內,也就是每個像素以8bits(或更少)來表示時,就需要參考到調色盤(palette),才能正確顯示顏色。 在BCB的範例中,灰階調色盤的建立如下例:
// 定義調色盤結構
typedef struct {
  TLogPalette lpal;
  TPaletteEntry dummy[256];
} LogPal;    // 建立灰階調色盤
LogPal GrayPalette;
GrayPalette.lpal.palVersion    = 0x300;
GrayPalette.lpal.palNumEntries = 256;
for(int Index = 0; Index < 256; Index  )
{
  GrayPalette.lpal.palPalEntry[Index].peRed   = (unsigned char)Index;
  GrayPalette.lpal.palPalEntry[Index].peGreen = (unsigned char)Index;
  GrayPalette.lpal.palPalEntry[Index].peBlue  = (unsigned char)Index;
  GrayPalette.lpal.palPalEntry[Index].peFlags = (unsigned char)0;
}
建立完調色盤的內容,要產生給TBitmap的調色盤則用
Graphics::TBitmap *NewBMP = new Graphics::TBitmap();
NewBMP->PixelFormat = pf8bit; // 指定為 8bpp 的BMP
NewBMP->Width       = width;  // 你的影像寬度
NewBMP->Height      = height; // 你的影像高度
NewBMP->Palette     = CreatePalette(&GrayPalette.lpal); // 建立灰階調色盤
如果是8bits的彩色圖檔,不同索引值對應的顏色資訊就由上面的peRed、peGreen、peBlue來決定。CreatePalette()是Windows API,由調色盤資訊建立調色盤。 如果是讀入一張8bits的圖檔(到TImage1中),可以利用GetPaletteEntries()來取得調色盤中的顏色資訊。用法如下:
PALETTEENTRY pe[256]; // 接收調色盤資訊的陣列    GetPaletteEntries(
    Image1->Picture->Bitmap->Palette, // handle of logical color palette 
    0,        // first entry to retrieve 
    256,        // number of entries to retrieve 
    pe         // address of array receiving entries  
);
希望對你有幫助~^^
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-08-28 23:58:30 IP:211.76.xxx.xxx 未訂閱
phorn 您好:    誠如您所說的BCB的確像是會自動調整調色盤的樣子。 經查BCB help的TBitmap/Palette,有個範例您可試試。 有嘗試著修改,不過好像不太理我。 < class="code">//--------------------------------------------------------------------------- /* something cut from BCB6 onLine helper. //... typedef struct tagPALETTEENTRY { // TPaletteEntry BYTE peRed; BYTE peGreen; BYTE peBlue; BYTE peFlags; } PALETTEENTRY, *PPALETTEENTRY, FAR *LPPALETTEENTRY; ///* Logical Palette * / typedef struct tagLOGPALETTE { // TLogPalette WORD palVersion; WORD palNumEntries; PALETTEENTRY palPalEntry[1]; } LOGPALETTE, *PLOGPALETTE, NEAR *NPLOGPALETTE, FAR *LPLOGPALETTE; ... */ [blue] typedef struct { TLogPalette lpal; TPaletteEntry dummy[256]; } LogPal; void __fastcall TForm1::Button2Click(TObject *Sender) { TCanvas *tempCanvas = new TCanvas; try { HWND notUsed; tempCanvas->Handle = GetDeviceContext(notUsed); TImage *image2save = new TImage(Form1); try { image2save->Height = Height; image2save->Width = Width; TRect destRect = Rect(0,0,Width,Height); TRect sourceRect = destRect; image2save->Canvas->CopyRect(destRect, tempCanvas, sourceRect); LogPal SysPal; SysPal.lpal.palVersion = 0x300; SysPal.lpal.palNumEntries = 256; GetSystemPaletteEntries(tempCanvas->Handle,0,256,SysPal.lpal.palPalEntry); image2save->Picture->Bitmap->Palette = CreatePalette((const tagLOGPALETTE *)&SysPal.lpal); image2save->Picture->Bitmap->PixelFormat = pf8bit; // Added by RichTop image2save->Picture->SaveToFile("see.bmp"); } __finally { delete image2save; } } __finally { delete tempCanvas; } }[blue] RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-08-30 23:15:50 IP:203.70.xxx.xxx 未訂閱
謝謝兩位大大的程式 再請問一下我要如何從一個已有色盤的 >
TheMoon
中階會員


發表:17
回覆:95
積分:67
註冊:2002-06-05

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-08-31 14:55:12 IP:202.39.xxx.xxx 未訂閱
插花一下< > ><> 直接複製調色盤資訊就可以了, >>> ><> 改變影像大小並不會改變影像調色盤資訊, 因為影像中每個點的顏色都是參照調色盤中的顏色, (假設圖為> 順心< >
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-08-31 15:45:40 IP:211.74.xxx.xxx 未訂閱
TheMoon您好:    直接複製調色盤資訊 B->Palette=A->Palette; 可是Palette好像是一個指標,這麼做只是將A->Palette的指標指向B->Palette 如果A釋放掉,B的調色盤就不見了,我上次用這樣結果第二次就不行了(畫面全變黑)< > 不知道是不是這個原因< >
TheMoon
中階會員


發表:17
回覆:95
積分:67
註冊:2002-06-05

發送簡訊給我
#16 引用回覆 回覆 發表時間:2004-08-31 18:40:39 IP:202.39.xxx.xxx 未訂閱
你說的沒錯,
還是要建立一個Palette比較安全,
可以用GetPaletteEntries來複製調色盤,    UINT GetPaletteEntries(
  HPALETTE hpal,       // handle of logical color palette 
  UINT iStartIndex,    // first entry to retrieve 
  UINT nEntries,       // number of entries to retrieve 
  LPPALETTEENTRY lppe  // address of array receiving entries  
);            複製的方式如下:
 LogPal Test;
 Test.lPal.palVersion=0x300;
 Test.lPal.palNumEntries=256;
 GetPaletteEntries(A->Palette,0,256,Test.lPal.palPalEntry);
 B->Palette=CreatePalette(&Test.lPal);    這樣應該就行了
     
        
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#17 引用回覆 回覆 發表時間:2004-08-31 20:00:12 IP:211.74.xxx.xxx 未訂閱
TheMoon您好:    您的程式我不知怎麼用,我全部貼上結果不能用 結果我加入上面大大?的,就可以了...可是不知有沒有錯誤 麻煩大大幫我看一下,還有那幾行程式什是麼意思ㄚ< > 我看不太懂< >也??我吧!!謝謝!! // 定義調色盤結構 >>>>>>
TheMoon
中階會員


發表:17
回覆:95
積分:67
註冊:2002-06-05

發送簡訊給我
#18 引用回覆 回覆 發表時間:2004-09-01 11:53:23 IP:202.39.xxx.xxx 未訂閱
Sorry...
之前沒說明清楚,
那是一個程式片段而已,
用來說明如何複製調色盤資訊,
所以你必須先在前面定義調色盤結構,
還有做一些前置動作。
附上一段完整的sample code作參考,
順心
<>
//定義調色盤資訊
>>>>>>><>//設定版本資訊
 >//設定調色盤內的色彩數目
 >//複製>
 >>//建立>
 >>>>>>>>
     
        
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#19 引用回覆 回覆 發表時間:2004-09-01 15:21:31 IP:211.74.xxx.xxx 未訂閱
TheMoon您好:    PixelFormat = pf8bit 的圖檔它每一個點是用1個Byte儲存顏色深度(0~255) 0~255的顏色是由調色盤所設定    PixelFormat = pf4bit、PixelFormat = pf1bit  的圖檔照字面上來看,它每一個點應該是用4bit及1bit來儲存顏色深度, 分別為2色跟16色。 那請問這個說法對嗎< > 還是, > 那他們的色盤又是怎麼配置ㄋ< > 想一次搞懂調色盤與 > 有勞大大囉
TheMoon
中階會員


發表:17
回覆:95
積分:67
註冊:2002-06-05

發送簡訊給我
#20 引用回覆 回覆 發表時間:2004-09-02 18:21:13 IP:202.39.xxx.xxx 未訂閱
引言: TheMoon您好: PixelFormat = pf8bit 的圖檔它每一個點是用1個Byte儲存顏色深度(0~255) 0~255的顏色是由調色盤所設定 PixelFormat = pf4bit、PixelFormat = pf1bit 的圖檔照字面上來看,它每一個點應該是用4bit及1bit來儲存顏色深度, 分別為16色跟2色。 那請問這個說法對嗎 <><>> 還是, > <><>> 那他們的色盤又是怎麼配置ㄋ< > 想一次搞懂調色盤與 > 有勞大大囉< > <><>> < href="http://www.awitness.org/delphi_pascal_tutorial/source3/palette_16_color.html">http://www.awitness.org/delphi_pascal_tutorial/source3/palette_16_color.html http://delphi.ktop.com.tw/topic.php?topic_id=31690
發表人 - TheMoon 於 2004/09/02 18:34:00
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#21 引用回覆 回覆 發表時間:2004-09-02 23:16:38 IP:211.74.xxx.xxx 未訂閱
TheMoon您好:    感謝您的答覆以及參考資料< > 那我測試了一下結果 > 但是量測出來的 > 是調色盤定義不同所照成的嗎?< > 還想請問大大一件事,就是一般 >可以自己設記憶體大小嗎< >謝謝!!< >
TheMoon
中階會員


發表:17
回覆:95
積分:67
註冊:2002-06-05

發送簡訊給我
#22 引用回覆 回覆 發表時間:2004-09-03 14:16:56 IP:202.39.xxx.xxx 未訂閱
引言: TheMoon您好: 感謝您的答覆以及參考資料< > 那我測試了一下結果 > 但是量測出來的><>> > 是調色盤定義不同所照成的嗎?< > <><> > 還想請問大大一件事,就是一般 >可以自己設記憶體大小嗎< >謝謝!!< > <><> class="code"> PixelFormat是1bit的情形: //A是pf1bit的影像 //1 byte 有 8 pixel for(j=0;jHeight;j ) { ptr1=(Byte *)A->ScanLine[j]; ptr2=(Byte *)B->ScanLine[j]; for(i=0;i<(int)((B->Width 7)/8);i ) ptr2[i]=ptr1[i]; } PixelFormat是4bit的情形: //A是pf4bit的影像 //1 byte 有 2 pixel for(j=0;jHeight;j ) { ptr1=(Byte *)A->ScanLine[j]; ptr2=(Byte *)B->ScanLine[j]; for(i=0;i<(int)((B->Width 1)/2);i ) ptr2[i]=ptr1[i]; }
發表人 - TheMoon 於 2004/09/03 14:49:23 發表人 - TheMoon 於 2004/09/03 14:51:01
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#23 引用回覆 回覆 發表時間:2004-09-06 22:10:23 IP:211.76.xxx.xxx 未訂閱
大家好:    有個很不錯的網站與程式,值得一遊與參考: http://homepages.borland.com/efg2lab/ImageProcessing/ImageEnhancementUsingPalettes.htm RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
phorn
一般會員


發表:28
回覆:60
積分:17
註冊:2004-03-03

發送簡訊給我
#24 引用回覆 回覆 發表時間:2004-09-08 16:34:34 IP:210.64.xxx.xxx 未訂閱
不好意思最近辦移機,所以這麼晚才來回覆< > 請問各位大大< > 一般都是用 ptr=(Byte *)A->ScanLine[j]; 所以 ptr[x] 都是以1個Byte來處裡 有辦法將Byte改成Bit 讓 ptr[x] 都是以1個bit來處裡嗎< > 各位大大應該知道我的意思吧< >!! 我不太會表達< >請諒解囉< >謝謝!!
jou0117
一般會員


發表:0
回覆:1
積分:0
註冊:2007-02-14

發送簡訊給我
#25 引用回覆 回覆 發表時間:2007-02-14 13:26:19 IP:140.123.xxx.xxx 訂閱
請問各位大大
這一段code如果要在visual studio C 寫的話,是要怎麼修改呢
// 定義調色盤結構
typedef struct {
TLogPalette lpal;
TPaletteEntry dummy[256];
} LogPal;

// 建立灰階調色盤
LogPal GrayPalette;
GrayPalette.lpal.palVersion = 0x300;
GrayPalette.lpal.palNumEntries = 256;
for(int Index = 0; Index < 256; Index )
{
GrayPalette.lpal.palPalEntry[Index].peRed = (unsigned char)Index;
GrayPalette.lpal.palPalEntry[Index].peGreen = (unsigned char)Index;
GrayPalette.lpal.palPalEntry[Index].peBlue = (unsigned char)Index;
GrayPalette.lpal.palPalEntry[Index].peFlags = (unsigned char)0;
}
 

建立完調色盤的內容,要產生給TBitmap的調色盤則用

Graphics::TBitmap *NewBMP = new Graphics::TBitmap();
NewBMP->PixelFormat = pf8bit; // 指定為 8bpp 的BMP
NewBMP->Width = width; // 你的影像寬度
NewBMP->Height = height; // 你的影像高度
NewBMP->Palette = CreatePalette(&GrayPalette.lpal); // 建立灰階調色盤

謝謝各位大大
------
Just do it
系統時間:2024-11-24 10:23:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!