找回密码
 立即注册

QQ登录

只需一步,快速开始

tonywang

初级会员

11

主题

42

帖子

247

积分

初级会员

积分
247

微信认证勋章

tonywang
初级会员   /  发表于:2016-7-8 12:05  /   查看:5159  /  回复:6
如题,我希望的效果如下图:



但是目前由于HighLight的颜色不能设置透明度,所以绿色和粉色的区域,高亮状态下就变成蓝色了。


有没有什么方法设置透明度?

本帖子中包含更多资源

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

x

6 个回复

倒序浏览
unity
社区贡献组   /  发表于:2016-7-8 14:41:20
沙发
这个控件好像无法直接支持。
可以通过控件的OwnerDraw自己实现,思路如下:
1. 在绘制是判断是否是选择的单元格。
2. 对于选择的单元格,先使用普通的style进行绘制。
3. 使用带透明度是画刷进行填充绘制。

评分

参与人数 1金币 +600 收起 理由
Alice + 600 很给力!

查看全部评分

回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-7-8 15:55:37
板凳
产品没有提供接口支持透明色设计。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
unity
社区贡献组   /  发表于:2016-7-8 17:12:07
地板
这边测试了一下,实现没有问题。
以下是实现代码:


  1. //设定为OwnerDraw模式
  2. c1FlexGrid1.DrawMode = DrawModeEnum.OwnerDraw;
  3. private void c1FlexGrid1_OwnerDrawCell(object sender, C1.Win.C1FlexGrid.OwnerDrawCellEventArgs e)
  4.         {
  5.             //透明颜色
  6.             Color alphaBlue = Color.FromArgb(80, 51, 153, 250);

  7.             if (e.Style.Name == c1FlexGrid1.Styles.Highlight.Name)
  8.             {
  9.                 //单元格的style
  10.                 CellStyle stl = c1FlexGrid1.GetCellStyle(e.Row, e.Col);
  11.                 if (stl == null)
  12.                 {
  13.                     stl = c1FlexGrid1.Styles.Normal;
  14.                 }
  15.                 e.Style = stl;
  16.                 e.DrawCell();//使用通常style绘制

  17.                 //使用透明画刷进行填充绘制
  18.                 using (Brush bs = new SolidBrush(alphaBlue))
  19.                 {
  20.                     e.Graphics.FillRectangle(bs, e.Bounds);
  21.                 }               
  22.             }
  23.         }
复制代码

评分

参与人数 1金币 +500 收起 理由
Alice + 500 很给力!

查看全部评分

回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-7-8 17:25:50
5#
unity 发表于 2016-7-8 17:12
这边测试了一下,实现没有问题。
以下是实现代码:

谢谢@unity,再追加奖励评分。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
tonywang
初级会员   /  发表于:2016-7-12 16:08:03
6#
@unity @Alice 万分感谢!
之前想过在OwnerDrawCell方法中实现这个效果,主要担心OwnerDrawCell的性能。
回头我试试
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-7-12 17:42:50
7#
tonywang 发表于 2016-7-12 16:08
@unity @Alice 万分感谢!
之前想过在OwnerDrawCell方法中实现这个效果,主要担心OwnerDrawCell的性能。
...

谢谢反馈。
可以在项目上测试下,会不会有性能问题。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部