社区
GAME,图形处理/多媒体
帖子详情
如何用delphi得到bmp位图的rgb成分?
mattus_zhao
2002-10-20 02:00:01
如何用一个循环遍历一幅bmp位图,得到每一个象素点的rgb成份,并分别存放在三个数组当中?
...全文
194
6
打赏
收藏
如何用delphi得到bmp位图的rgb成分?
如何用一个循环遍历一幅bmp位图,得到每一个象素点的rgb成份,并分别存放在三个数组当中?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ehom
2002-12-03
打赏
举报
回复
http://expert.csdn.net/Expert/TopicView1.asp?id=1227110
HOOK_TTG
2002-12-03
打赏
举报
回复
//这是个范例,教你怎么取得RGB,你学以后可要急得给我加分啊!!!
unit Ugetcor;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls, Buttons;
type
Tgetcol = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
procedure FormClick(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Panel1Click(Sender: TObject);
procedure FormDblClick(Sender: TObject);
procedure FormResize(Sender: TObject);
private
tx,ty : integer;
procedure WMEraseBkng(var MSg:TWMEraseBkgnd);message WM_ERASEBKGND;
public
{ Public declarations }
end;
var
getcol: Tgetcol;
implementation
{$R *.DFM}
const
Digits : array[0..$F] of Char = '0123456789ABCDEF';
function HexB(B : Byte) : string;
{-Return hex string for byte}
begin
HexB[0] := #2;
HexB[1] := Digits[B shr 4];
HexB[2] := Digits[B and $F];
//对Delphi5将上三行改为:HexB:=Digits[B shr 4]+Digits[B and $F];
end;
procedure Tgetcol.WMEraseBkng(var MSg:TWMEraseBkgnd);
begin
Msg.Result:=1;
end;
procedure Tgetcol.FormClick(Sender: TObject);
var t : tcolor;
r,g,b : byte;
begin
t := canvas.pixels[tx,ty];
r := getRvalue(t);
g := getGvalue(t);
B := getBvalue(t);
LABEL2.COLOR := T;
LABEL1.CAPTION := '$00' + HEXB(R) + HEXB(G) + HEXB(B);
end;
procedure Tgetcol.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
tx := x;
ty := y;
end;
procedure Tgetcol.Panel1Click(Sender: TObject);
begin
CLOSE;
end;
procedure Tgetcol.FormDblClick(Sender: TObject);
begin
close;
end;
procedure Tgetcol.FormResize(Sender: TObject);
begin
panel1.top := height - panel1.height -1;
panel1.left := width - panel1.width -1;
panel1.visible := true;
end;
end.
ezlz
2002-11-11
打赏
举报
回复
kl:longint;
rr,gg,bb:byte;
kl:=ColorToRGB(image1.Canvas.Pixels[i,j]);
rr:=byte(kl);
gg:=byte(kl shr 8);
bb:=byte(kl shr 8);
这样就得到RGB值了,然后加上循环,就可分别存放在三个数组。
smhpnuaa
2002-10-23
打赏
举报
回复
getpixel
cbdiy
2002-10-23
打赏
举报
回复
rg,rb: 通过getgvalue(tc);getbvalue(tc)加到for语句中就ok!!
cbdiy
2002-10-23
打赏
举报
回复
var tc:tcolor;
rr,rg,rb:array of integer;
k:tbitmap;
i,j,d:integer;
begin
k:= image1.Picture.Bitmap;
if k = nil then exit;
setlength(rr,k.Width*k.Height);
for i:=1 to k.Width do
for j:=1 to k.Height do
begin
tc := k.Canvas.Pixels[i,j];
rr[(j-1)*k.Height+j] := getrvalue(tc);
end;
Delphi
开发技巧之-图形图像
使用资源中的
位图
使用鼠标画区域 列出所有可用屏幕分辨率 判断TImage是否为空 制作圆形窗口 加密图像 取
BMP
文件信息 取canvas当前鼠标位置像素颜色 取
RGB
颜色灰度 取、改变系统颜色 取字符高和宽 取当前屏幕分辨率 ...
Delphi
7 新概念百例
48 多种渐变色的实现 │ ├─47 TColor与
RGB
值的互相转换 │ ├─46 将文本转换成图像 │ ├─45 提高对
位图
象素的访问速度 │ ├─44 将彩色
位图
转换为灰度图 │ ├─43 将图像从jpg,ico,
bmp
,wmf格式转换为emf格式 ...
delphi
开发经验技巧宝典源码
0034 在
Delphi
中禁止使用result 24 0035 如何在
Delphi
中录制代码 24 0036 如何编译器会提示数组太大时的处理技巧 25 0037 如何对超大数字进行计算 25 0038 强类型的定义及使用 25 2.2 类、函数、重载 25...
Delphi
开发范例宝典目录
实例139 获取指定点的
RGB
值 173 实例140 地图地理定位 174 实例141 车牌号码识别 176 3.9 图像工具 177 实例142 获取图片类型 177 实例143 简单画图程序 178 实例144 看图工具 181 实例145 文字保存...
delphi
开发经验技巧宝典源码06
0034 在
Delphi
中禁止使用result 24 0035 如何在
Delphi
中录制代码 24 0036 如何编译器会提示数组太大时的处理技巧 25 0037 如何对超大数字进行计算 25 0038 强类型的定义及使用 25 2.2 类、函数、重载 25...
GAME,图形处理/多媒体
1,183
社区成员
14,336
社区内容
发帖
与我相关
我的任务
GAME,图形处理/多媒体
Delphi GAME,图形处理/多媒体
复制链接
扫一扫
分享
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章