如何取当前颜色的反颜色/选中颜色?
比如在选中的区域画出文字,选中时的Brush.Color,字体颜色是Font.Color
当Brush.Color=Font.Color时,就显示不出字体了
我想实现的是,当Brush.Color=Font.Color时就把Font.Color用Brush.Color的选中颜色取代
Brush.Color和Font.Color都不是确定值
该如何做?
问题点数:10、回复次数:9Top
1 楼fou007(命运掌握在自己手中!)回复于 2005-06-02 12:52:14 得分 0
小奇唱到:没有人理我Top
2 楼jtg98g3(跳舞的青蛙)回复于 2005-06-02 17:00:58 得分 4
用按位取反运算试一试!
请问高手有没有处理过BMP图像的数据。
我在取的bmp的数据后。然后画出来。发现有个问题。就是在8位图像中需要对图像做垂直翻转才能显示正常。还有它的24位图像中。三个字节代表了三中颜色。那么三个字节跟三种颜色有什么对应关系。比如三个字节中第一个字节存放了那种颜色?第二个,第三个呢?Top
3 楼chijingde(AD)回复于 2005-06-02 17:22:50 得分 6
RGB各自的颜色分别用255去减Top
4 楼chijingde(AD)回复于 2005-06-02 17:31:48 得分 0
回楼上
1-3分别对应的蓝绿红好像
Top
5 楼jtg98g3(跳舞的青蛙)回复于 2005-06-02 21:57:55 得分 0
先些了!已经成功了。能显示24位的bmp数据了。我用的画笔是self.canvas.pixels[x,y]。
但是不能正常显示2,4位的bmp数据。是不是调色板出了问题?请看:
http://community.csdn.net/Expert/topic/4055/4055077.xml?temp=.1816065Top
6 楼jtg98g3(跳舞的青蛙)回复于 2005-06-02 21:58:26 得分 0
楼主,不好意思,借宝地一用哦!
Top
7 楼fou007(命运掌握在自己手中!)回复于 2005-06-14 16:15:02 得分 0
前几天有些忙
谢谢大家指点
我在网上搜索了一下有一个Color->RGB的函数:
function TForm1.ChangeToRGB(Color: TColor): String;
var
R,G,B:integer;
begin
R := Color and $ff;
G := (Color and $ff00) shr 8;
B := (Color and $ff0000) shr 16;
result:=show(R)+show(G)+show(B);
end;
procedure TForm1.ColorBox1Change(Sender: TObject);
begin
Panel1.Color := ColorBox1.Selected ;
end;
function TForm1.show(X: integer): String;
var
a,b:integer;
begin
if x<=15 then
result:='0'+showHex(x)
else
begin
a:=x div 16;
b:= (x mod 16);
result:=showHex(a)+showHex(b);
end;
end;
function TForm1.showHex(X: integer): String;
begin
if x<10 then
result:=inttostr(x)
else if x=10 then
result:='A'
else if x=11 then
result:='B'
else if x=12 then
result:='C'
else if x=13 then
result:='D'
else if x=14 then
result:='E'
else if x=15 then
result:='F';
end;Top
8 楼fou007(命运掌握在自己手中!)回复于 2005-06-14 16:22:30 得分 0
我就用255去减去RGB各位再合起来
function TForm1.ChangeColor(Color: TColor): String;
var
R,G,B: integer;
begin
R := 255 - (Color and $ff);
G := 255 - ((Color and $ff00) shr 8);
B := 255 - ((Color and $ff0000) shr 16);
result:=show(R)+show(G)+show(B);
end;
的确可以获得一个颜色值
然后我用Panel2.Color := StringToColor(ChangeColor(Panel1.Color));
不过有时会报EConvertError
提示合成的值不是一个integer值
有高手给我指点一下么
是不是我这样取有问题
因为我得到的合法的颜色值感觉与原来的颜色值不搭旮Top
9 楼fou007(命运掌握在自己手中!)回复于 2005-06-14 16:24:00 得分 0
有过这方面经验的人进来帮忙看一下啊Top




