找回密码
 立即注册

QQ登录

只需一步,快速开始

leadcom

论坛元老

24

主题

96

帖子

2万

积分

论坛元老

积分
27812

活字格认证

leadcom
论坛元老   /  发表于:2015-8-4 11:16  /   查看:5786  /  回复:9
根据你们给我提供的例子做,还是存在问题。有时候选取颜色的区域不对。有时候选取颜色的区域是相反的。按当前处理的效果,达不到我们的要求。
替换颜色代码:
  1. //create a region of all dark areas
  2.                 viewer.Image.AddColorRgbRangeToRegion(lowerColor, rasterColor, RasterRegionCombineMode.Set);
  3.                 //invert the region so that it covers the non-dark areas
  4.                 viewer.Image.AddRectangleToRegion(null, new LeadRect(0, 0, viewer.Image.Width, viewer.Image.Height), RasterRegionCombineMode.SetNot);
  5.                 FillCommand fill = new FillCommand();
  6.                 fill.Color = new RasterColor(txtNewColor.BackColor.A, txtNewColor.BackColor.R, txtNewColor.BackColor.G, txtNewColor.BackColor.B);
  7.                 fill.Run(viewer.Image);
  8.                 ////clear the region
  9.                 viewer.Image.MakeRegionEmpty();
复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

9 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2015-8-4 20:21:00
沙发
回复 1楼leadcom的帖子

Demo 已经查收,明天上午进行调查,给您反馈。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-8-6 14:41:00
板凳
回复 1楼leadcom的帖子

问题已经重现了,已经反馈给厂商进行调查,有进一步消息及时反馈给您。
回复 使用道具 举报
leadcom
论坛元老   /  发表于:2015-8-10 15:30:00
地板
顶一下,急
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-8-10 17:57:00
5#
回复 4楼leadcom的帖子

抱歉久等了,已经发送确认邮件给厂商,我们及时通报问题进展给您
回复 使用道具 举报
leadcom
论坛元老   /  发表于:2015-8-12 10:11:00
6#
顶一下。。。急
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-8-12 13:46:00
7#
回复 6楼leadcom的帖子

请尝试修改以下代码:

  1.         private void btnReplace_Click(object sender, EventArgs e)
  2.         {
  3.             try
  4.             {
  5.                 if (viewer.HasImage == false)
  6.                     return;
  7.                 RasterColor rasterColor = new RasterColor(txtOldColor.BackColor.A, txtOldColor.BackColor.R, txtOldColor.BackColor.G, txtOldColor.BackColor.B);
  8.                 int val = int.Parse(txtValue.Text);
  9.                 int a = rasterColor.A * (val / 100);
  10.                 int r = rasterColor.R * (val / 100);
  11.                 int g = rasterColor.G * (val / 100);
  12.                 int b = rasterColor.B * (val / 100);
  13.                 RasterColor lowerColor = RasterColor.Create(a, r, g, b);


  14.                 //create a region of all dark areas
  15.                 viewer.Image.AddColorRgbRangeToRegion(lowerColor, rasterColor, RasterRegionCombineMode.Xor);
  16.                 //invert the region so that it covers the non-dark areas
  17.                 viewer.Image.AddRectangleToRegion(null, new LeadRect(0, 0, viewer.Image.Width, viewer.Image.Height), RasterRegionCombineMode.Xor);
  18.                 FillCommand fill = new FillCommand();
  19.                 fill.Color = new RasterColor(txtNewColor.BackColor.A, txtNewColor.BackColor.R, txtNewColor.BackColor.G, txtNewColor.BackColor.B);
  20.                 fill.Run(viewer.Image);
  21.                 ////clear the region
  22.                 viewer.Image.MakeRegionEmpty();


  23.             }
  24.             catch(Exception ex)
  25.             {
  26.                 MessageBox.Show("替换出错:" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
  27.             }
  28.         }
复制代码


主要是替换 RasterRegionCombineMode.Xor。主要是范围设置导致的问题,请参考:
https://www.leadtools.com/help/l ... ioncombinemode.html

了解替换范围设置。
回复 使用道具 举报
leadcom
论坛元老   /  发表于:2015-8-20 14:40:00
8#
按你们给的代码还是不行。。。
还有这里面我需要有一个容差的功能,
这样我先选取要替换的颜色的时候,我就可以根据容差来调整当前需要替换颜色的范转围。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-8-20 18:10:00
9#
回复 8楼leadcom的帖子

附件是我的测试Demo,容差值是启作用的,请查看是否符合你的需求:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-9-1 11:56:00
10#
回复 8楼leadcom的帖子

为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部