怎么样通过运算将图像表示为选中状态,就象ListView控件一样(100分)

  • 主题发起人 主题发起人 hnzzq
  • 开始时间 开始时间
H

hnzzq

Unregistered / Unconfirmed
GUEST, unregistred user!
就象ListView控件一样表示出选中和未选中的状态
 
我想可以给每个点的象素值加上A0,应该够了。
 
怎么加?具体点
 
LISTVIEW有一个状态索引的属性,用这个也应该不难
 
什么意思?我不是用ListView来做的,我自已做的控件想要表现选中和未选中的状态
 
listview中的选中与未选中并不是通过图来判断的,而是通过list中的index.
 
你们都没理解我的意思,我不想讨论Listview控件,因为我找了很久都没找到Listview画图的过程,
反正我知道Listview控件不是像Treeview控件那样选中和未选中是通过指定Imageindex和selectedindex
来表示出选定和未选定。我现在编的是一个继承自TCurstomControl的控件,将它放到Scrollbox控件
中,我想要在用户点控件时表示出是选中状态。我给每一个像素加一个值效果不好。语句如下:
for i:=0 to FBitmap.Width-1 do
for j:=0 to FBitmap.Height-1 do
begin
if FBitmap.Canvas.Pixels[i,j]<>clwhite then
BitmapTemp.Canvas.Pixels[i,j]:=FBitmap.Canvas.Pixels[i,j]+$A0;
end;
我想要知道一个什么样子的合适的值或者算法能够实现
 
怎么没人知道吗?
 
用ImageList_Draw这个API并设置style为ILD_BLEND25, ILD_FOCUS, ILD_BLEND50或者ILD_SELECTED即可
 
Pearl:你说的对于静态添加的图片可以,而且很好,动态添加的,它就把透明区域也搞成那种效果了。
很难看。不知道你还有什么高招吗?我的代码:
ImageList1:=TImageList.Create(self);
ImageList1.Width:=FBitmap.Width;
ImageList1.Height:=FBitmap.Height;
ImageList1.DrawingStyle:=dsTransparent;
ImageList1.Add(FBitmap,nil);
BitmapTemp:=TBitmap.Create;
BitmapTemp.Width:=FBitmap.Width;
BitmapTemp.Height:=FBitmap.Height;
if FIsSelected then
begin
if FCanModify then
begin
with DisplayBitmap.Canvas do
begin
ImageList_Draw(ImageList1.Handle,0,BitmapTemp.Canvas.Handle,0,0,ILD_BLEND25 or ILD_FOCUS or ILD_BLEND50 or ILD_TRANSPARENT);
ImageList1.Destroy;
Font:=FFont;
brush.Color:=clWhite;
FillRect(ClipRect);
StretchDraw(Rect(22,1,Width-22,FImageHeight+1),BitmapTemp);
BitmapTemp.Free;
.........................................................
 
--->ImageList1.Add(FBitmap,nil);
???
你不指定mask当然没有透明效果啦。
tmp := tbitmap.create;
tmp.assign(fbitmap);
tmp.mask(tmp.canvas.pixels[0,tmp.height-1]);
imagelist1.add(fbitmap, tmp);
...
 
算法实际上就是把各点转为16色的灰度图像
 
感谢,不过我还是有一点问题,在设计时添加和动态添加就是加上你刚才的Mask,还是有一些图显示不一样。
白底的都好象可以,但是有一种灰底的就不行动态添加的不能透明,而设计时添加就可以透明。不知道是什么原因。
 
好了不问了
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
825
DelphiTeacher的专栏
D
D
回复
0
查看
831
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部