如有这样一组16进制数:0000 FFFF 4DC5 FFFF ,其中0000为黑色、FFFF为白色,
每两个字节可表示一个6万5千色的一个点,共有4个点,我想在Image上把它画出来,可是如何将它转换为相应的RGB值呢?
每两个字节可表示一个6万5千色的一个点,共有4个点,我想在Image上把它画出来,可是如何将它转换为相应的RGB值呢?
解决方案 »
- fastreport 怎么在报表浏览里显示多份相同数据的页面
- 购方名称如何解密??
- 请介绍几个支持DELPHI的测试工具!!
- DBGrid里,怎样禁止增加或插入行?
- 请问在delphi中怎样打印立方厘米?要求不能是中文,必须是字母‘cm’加3上标的形式。
- 在DELPHIBOX上下载了一个自制安装文件的源码,上面有讲制作资源文件RES,怎么个做发?
- 用DELPHI編寫一個程序,當用記隻要移動了一下鼠標或敲了一下鍵盤時,就觸發一個事件。
- 数据库提取数据N多问题
- Crob(我干嘛这么帅) and cobi(我是小新,我只有5岁)请看这个怎么解决?
- “MDI窗口”中的MDI是什么意思?
- 听说有个国产的易语言,不知道怎么样?
- Unsatisfied forward or external declaration
如果要分离R G B,可以这样:
R:= Color and $FF;
G:=(Color and $FF00) Shr 8;
B:=(Color and $FF0000) Shr 16;
procedure TForm1.Button1Click(Sender: TObject);
VAR
Bitmap: TBitmap;
i : INTEGER;
j : INTEGER; R : 0..31; // 5 bits
G : 0..63; // 6 bits (eye is most sensitive to green)
B : 0..31; // 5 bits RGB : WORD;
Row : pWordArray; // from SysUtils
begin
Bitmap := TBitmap.Create;
TRY
Bitmap.Width := Image1.Width;
Bitmap.Height := Image1.Height;
Bitmap.PixelFormat := pf16bit; R := 31; // Max Red
G := 63; // Max Green
B := 0; // No Blue // "FillRect" using Scanline
RGB := (R SHL 11) OR (G SHL 5) OR B; // "yellow" FOR j := 0 TO Bitmap.Height-1 DO
BEGIN
Row := Bitmap.Scanline[j];
FOR i := 0 TO Bitmap.Width-1 DO
Row[i] := RGB
END; Image1.Picture.Graphic := Bitmap
FINALLY
Bitmap.Free
ENDend;