分散区域的选择,有点难度的哦!200分相送.(申请斑竹救援!) (100分)

  • 主题发起人 TIDE_LIU
  • 开始时间
T

TIDE_LIU

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,一幅图像,只有黑白两种颜色,黑色区域是分散的,要将这些区域选择出来,
将白色区域透明,急.
 
不知道你的图形是什么格式的,如果是BMP格式,放在Form上设置Image的Transparent为true就行,
下面的代码是在图形不透明的情况下将将白色换成黄色,如果图形是JPG格式,需要先转换
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
begin
for i:= 0 to Image2.Height-1 do
for j:= 0 to Image2.Width-1 do
begin
if Image2.Canvas.Pixels[j,i]=clWhite then
Image2.Canvas.Pixels[j,i]:=clYellow;
end;
end;
 
不是这个意思
我是要区域
确定区域后才能用材质填充呀
 
你是想做一个类似Photoshop区域选择那样的东西吗,确实很难,因为要建立一个数据结构存储有关信息,而且要的好几步来做,帮不了你
 
那也不一定
看看
Image1.Canvas.FloodFill(100,100,clWhite,fsBorder);
这就填充了一个区域
100,100是这个区域中一个点,clwhite,fsborder是确定边缘
问题是多个区域
 
做一幅和你现在图片一模一样但颜色相反的图片,称为 Mask ,
使用 Canvas.CopyMode := cmSrcCopy 将材质画入画布,
使用 Canvas.CopyMode := cmSrcAnd 将 Mask 画入画布相同区域,
使用 Canvas.CopyMode := cmSrcPaint 将你的那幅画入 Mask 相同画布坐标。
 
我的一幅图可能会有4-9个层需要确定不同分散区域
这样的话系统开销太大了,每层都要一个mask
有没有更好的方法
 
直接调用光栅化。我也不熟,只是知道有这么回事,光栅操作码大概不会少于 100 个吧。
 
斑竹啊,你在哪里啊,快显身吧,
这个问题有救吗?
 
顶部