• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Delphi中使用调色板创建渐变色位图

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 //创建调色板函数,R,G,B颜色分量,0-1之间取值

 

 1 FUNCTION MaxGradientPalette(CONST RedFactor, GreenFactor, BlueFactor:  Single):  hPalette;
 2   VAR
 3     i             :  INTEGER;
 4     LogicalPalette:  TMaxLogPalette;
 5 BEGIN
 6     ASSERT (RedFactor   <= 1);   // values must be 0 to 1
 7     ASSERT (GreenFactor <= 1);
 8     ASSERT (BlueFactor  <= 1);
 9 
10     LogicalPalette.palVersion    := PaletteVersion;
11     LogicalPalette.palNumEntries := 256;
12     FOR i := 0 TO 255 DO
13     BEGIN
14       LogicalPalette.palPalEntry[i].peRed   := Round(i * RedFactor);
15       LogicalPalette.palPalEntry[i].peGreen := Round(i * GreenFactor);
16       LogicalPalette.palPalEntry[i].peBlue  := Round(i * BlueFactor);
17       LogicalPalette.palPalEntry[i].peFlags := PC_RESERVED;
18     END;
19     RESULT := CreatePalette(pLogPalette(@LogicalPalette)^);
20 END;
21 

 创建使用调色板的位图

 1 procedure  GradientBitmap(var ShowBitMap:TBitmap;CONST RedFactor, GreenFactor, BlueFactor:  Single);
 2   CONST
 3     BitmapSize = 256;
 4   VAR
 5     i     :  INTEGER;
 6     index :  INTEGER;
 7     j     :  INTEGER;
 8     Row   :  pByteArray;
 9 begin
10      ShowBitMap.PixelFormat := pf8bit;
11      ShowBitMap.Height := BitmapSize;
12      ShowBitMap.Width  := BitmapSize;
13     // 1.  Create palette first.
14      ShowBitMap.Palette:= MaxGradientPalette(RedFactor, GreenFactor, BlueFactor);
15 
16     //  2. Assign Scanline value;
17     FOR  j := 0 TO BitmapSize-1 DO
18     BEGIN
19       Row :=  ShowBitMap.Scanline[j];
20       FOR i := 0 TO BitmapSize-1 DO
21       BEGIN
22         index := (i+j) DIV 2;
23         Row[i] :=  index;
24       END
25     END;
26 end;
27 

 使用调色板位图,显示在Picture上面

 

 1 procedure TFormPf8bit.Button4Click(Sender: TObject);
 2 var
 3   bitmap1:TBitmap;
 4 begin
 5   bitmap1:=TBitmap.Create;
 6   GradientBitmap( bitmap1,0.5,0.2,1.0);
 7   ImageShow.Picture.Graphic:=bitmap1;
 8   bitmap1.Free;
 9 end;
10 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab 基础知识发布时间:2022-07-18
下一篇:
MATLAB构建Hessian矩阵发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap