image1.canvas.pixels[i,j]:=????
是个256的灰度图,那个???是我想添加的颜色,
应该写什么呀??类型,长度??
能不能将一幅256图的颜色经过均衡即ss[i,1]存颜色从0..255,s[i,2]存比例
image1.cancas.pixels[i,j]:= round( ss[此处是原图一点的颜色,2]*255)
我试不行,不知哪错了
是个256的灰度图,那个???是我想添加的颜色,
应该写什么呀??类型,长度??
能不能将一幅256图的颜色经过均衡即ss[i,1]存颜色从0..255,s[i,2]存比例
image1.cancas.pixels[i,j]:= round( ss[此处是原图一点的颜色,2]*255)
我试不行,不知哪错了
不管你是什么模式的图,
内部都是转成24位处理的,
要处理灰度图的亮度比例,
只要3原色分别做同样处理就可以了,
首先取出原图一点的值:
var myColor:Tcolor;//取的点的颜色
r,g,b:byte;//3原色
s: integer;//变换比例
myColor:=image1.canvas.pixels[i,j];
然后分别取出此点r,g,b值:
r:=getrvalue(mycolor);
g:=getgvalue(mycolor);
b:=getbvalue(mycolor);
再对r,g,b做变换:
r:=r*s;
g:=g*s;
b:=b*s;
最后写回去:
image1.canvas.pixels[i,j]:=rgb(r,g,b);注意处理后的r,g,b值要控制在0-255间
也就是s必须在0..1
这几天我已经自己弄出来了!!
thank you all the same!!我等一等结贴
to: ehom
你好,我现在非常希望提高效率!!
可我不懂ddb与gdi的区别呀!!我们这的老师也没牛的
图象的作业我看c++书的代码执行效率特高,而我这就……
拜托师兄给段代码吧!!!!
谢谢
最近正在学这个,我发现scanline在作有的东西时不方便,比如任意角度旋转!!
只好用pixels,这时效率与vc++就有很大差距,怎么办呀
google也不太会用,要你讲似乎挺麻烦你的,也超出了问题的范围!!!我自己看吧……
哎,要学的太多了
>>只好用pixels,这时效率与vc++就有很大差距这和开发工具有关系???毫无关系.我上面已经把理由说的非常非常清楚!!!你觉得VC++效率高?很遗憾Delphi可以写出完全一样的代码?你可以把你认为效率高的任何C++代码用Delphi改写出来,效率不会有差别。如果你是选择用GDI,用VC++也是一样慢,会有区别?不会,一点区别都没有。什么叫方便?什么叫不方便?DIB内存一样可以用X、Y两个参数的方式去访问像素信息,这只是封装的问题。你的整个观点还是完全错误的。