TListView 可以切換使用兩個不同維度的 ImageList 嗎? |
尚未結案
|
Jack222
一般會員 發表:9 回覆:8 積分:3 註冊:2004-11-30 發送簡訊給我 |
TListView 的 ViewStyle 為 vsReport, 先指定一個維度 14x14 的 ImageList 給 SmallImage, 這是為了顯示在 Column Title 和 Item 的左方用的; 另外, 我想在 Item 右方的 SubItem 顯示 80x14 的圖案, 所以又再建了一個 80x14 的 ImageList, 本來是想用切換 ImageList 的方式, 不料顯示 80x14 的圖時, 還是會影響到 Item 左方的空白, 其會由寬度 14 變為 80; 後來我想說直接用 DrawSubItem 的方式自己畫(Load a bitmap file), 不過還是不盡理想, 不僅其它 SubItem 的文字字型受到影響, 當 Column 寬度改變時, 還會有殘影的問題, 以下是我畫 SubItem 的部分程式:
void __fastcall TfrmmTunes::lvCustomDrawSubItem(TCustomListView *Sender,
TListItem *Item, int SubItem, TCustomDrawState State,
bool &DefaultDraw)
{
// the SubItem we want to draw
if(ColumnOrderWidth[SubItem].ColCaption == S_RATING) {
DefaultDraw = false;
TCanvas *pCanvas = ((TListView *)Sender)->Canvas;
int X = 0, Y = Item->Position.y; for(int i=0; i < SubItem; i加加) // Locate X coordinate
X 加= ((TListView *)Sender)->Column[i]->Width; TRect Rclear = Bounds( X, Y, ((TListView *)Sender)->Column[SubItem]->Width,
((TListView *)Sender)->Font->Height); pCanvas->FillRect(Rclear); // Clear first
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
pBitmap->LoadFromFile("D:\\BCB\\TEST\\Rating5.bmp"); TRect Rbitmap = Bounds( 0, 0, ((TListView *)Sender)->Column[SubItem]->Width,
((TListView *)Sender)->Font->Height); TRect Rbitmap_area = Bounds( X, Y, ((TListView *)Sender)->Column[SubItem]->Width,
((TListView *)Sender)->Font->Height); pCanvas->BrushCopy( Rbitmap_area, pBitmap, Rbitmap, clWhite);
delete pBitmap;
}
} 不知是否有好方法可解此問題? 謝謝! 發表人 - Jack222 於 2005/03/10 18:59:00 發表人 - Jack222 於 2005/03/10 19:10:11
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |