创建调色板

procedure TForm1.Button1Click(Sender: TObject);
var
  lpPalette : PLogPalette;
  hPal : hPalette;
  i : integer;
begin

 {Allocate the memory used by the palette}
  GetMem(lpPalette,
         sizeof(TLogPalette) + (255 * sizeof(TPaletteEntry)));

 {Fill out the palette header}
  lpPalette^.palVersion := $300;
  lpPalette^.palNumEntries := 256;

 {Turn range checking off if it is on and}
 {remember the range checking state}
 {$IFOPT R+}
   {$DEFINE CKRANGE}
   {$R-}
 {$ENDIF}

 {Fill in the palette structure color table with shades of gray}
  for i := 0 to 255 do begin
    lpPalette^.PalPalEntry[i].peRed := i;
    lpPalette^.PalPalEntry[i].peGreen := i;
    lpPalette^.PalPalEntry[i].peBlue := i;
  end;

 {Turn range checking back on if it was on when we started}
 {$IFDEF CKRANGE}
   {$UNDEF CKRANGE}
   {$R+}
 {$ENDIF}

 {Create a palette handle}
  hPal := CreatePalette(lpPalette^);

 {Free the memory use by the palette structure}
  FreeMem(lpPalette,
          sizeof(TLogPalette) + (255 * sizeof(TPaletteEntry)));

 {Do something with the palette here}

 {Delete the palette handle after use}
  DeleteObject(hPal);
end;
时间: 2024-08-26 13:37:04

创建调色板的相关文章

Windows DIB文件操作详解-5.DIB和调色板

Windows调色板是256色显卡时期的产物,现在显卡最少也是16bit的了,所以调色板基本上是用不到了的. 但是下面几种情况还是需要去使用和了解调色板: 1.在新显卡上保证256色兼容模式的正常运行 2.在256色显卡或低于256色显卡老机器上运行程序或在一些工业控制场合(为了节约成本可能采用256色显卡或低于256色显卡)运行程序 3.操作DIB的指定像素点数据 1.调色板是什么 同样采用下面一张图 如上图,我们可以调色板分为如下几种: 1.DIB文件中的调色板 2.内存中创建的逻辑调色板对

Windows DIB文件操作具体解释-5.DIB和调色板

Windows调色板是256色显卡时期的产物,如今显卡最少也是16bit的了.所以调色板基本上是用不到了的. 可是以下几种情况还是须要去使用和了解调色板: 1.在新显卡上保证256色兼容模式的正常执行 2.在256色显卡或低于256色显卡老机器上执行程序或在一些工业控制场合(为了节约成本可能採用256色显卡或低于256色显卡)执行程序 3.操作DIB的指定像素点数据 1.调色板是什么 相同採用以下一张图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd

第16章 调色板管理器_16.3 调色板和现实世界中的图像

16.3.1 调色板和紧凑DIB (1)对于16.24.32位的DIB,没有颜色表,就不必创建调色板.但在8位视频模式下,只会用标准的20种保留色来显示.由DIB颜色表创建的调色板被称为“原生调色板” (2)dwPixel =PackedDibGetPixel(pPackedDib,x,y),当这类函数多次调用时会使程序变慢. (3)很多函数,需要对OS/2兼容DIB作不同处理. [ShowDib3程序]——原生(Native)调色板 效果图 //PackedDIB.h文件 /*--------

第16章 调色板管理器_16.4 一个DIB位图库的实现(1)

16.4.1自定义的 DIBSTRUCT结构体 字段 含义 PBYTE *ppRow ①指向位图视觉上最上面的一行像素.(不管是自下而上,还是自上而下) ②放在第一个字段,为的是后面定义宏时可方便访问到 int iSignature =“Dib ”,是这个结构体的标志 HBITMAP hBitmap 存储了由CreateDIBSection返回的位图句柄(注意,实质是DIB,但兼有DDB的特点,可直接BitBlt) BYTE *pBits 指向像素阵列的指针,其指针值在CreateDIBSect

第16章 调色板管理器_16.4 一个DIB位图库的实现(2)

//接上一篇 //DibPal.h /*----------------------------------------------------------------- DIBPAL.H header file for DIBPAL.C -----------------------------------------------------------------*/ #pragma once; #include <windows.h> #include "DibHelp.h&q

自己总结的 iOS ,Mac 开源项目以及库,知识点------持续更新

自己在 git  上看到一个非常好的总结的东西,但是呢, fork  了几次,就是 fork  不到我的 git 上,干脆复制进去,但是,也是认真去每一个每一个去认真看了,并且也是补充了一些,感觉非常棒,所以好东西要分享,为啥用 CN 博客,有个好处,可以随时修改,可以持续更新,不用每次都要再发表,感觉这样棒棒的 我们 自己总结的iOS.mac开源项目及库,持续更新.... github排名 https://github.com/trending,github搜索:https://github.

iOS常用开发资源整理

在行--专家付费咨询 杂项 App Release Checklist—iOS App发布清单. Hey Focus—帮助你专注于一个任务. Objective Cloud—Objective C App云端服务. Thermal—核心数据编辑器. Big Papoo—替代安装Adhoc App. Tweriod—分析你的推特和followers的推特找出最佳发布时间. Helpscout—用户邮件处理支持. Hipmob—应用内实时聊天. Flat Mobile App Design in P

iOS开发 非常全的三方库、插件、大牛博客等等

UI 下拉刷新 EGOTableViewPullRefresh- 最早的下拉刷新控件. SVPullToRefresh- 下拉刷新控件. MJRefresh- 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.具体使用看"使用方法". (国人写) XHRefreshControl- XHRefreshControl 是一款高扩展性.低耦合度的下拉刷新.上提加载更多的组件.(国人写) CBStoreHo

iOS、mac开源项目及库汇总

UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.具体使用看“使用方法”. (国人写) XHRefreshControl – XHRefreshControl 是一款高扩展性.低耦合度的下拉刷新.上提加载更多的组件.(国人写) CBStoreHou