【发布时间】:2013-05-16 02:10:04
【问题描述】:
所以我正在尝试制作一个漂亮的圆形开关,当点击它时它会向左或向右滑动以基本上打开或关闭某些东西(它可以用于其他事情)。我有一个矩形版本的工作有点好(我想为它做一些调整)但我遇到的问题是使用圆角矩形。我做了一些课程来帮助我自己。我有一个叫 RoundRectanglePath。使用 Create 方法,我给它一个 Rectangle(或 x、y、w、h)和角的半径,它返回一个封闭的 GraphicsPath,然后我可以使用 Graphics.[Fill|Draw]Path。然后我有一个 RoundRectangle 类,它只是一个与标签非常相似的控件。我发现如果我覆盖 OnPaintBackground 并且不将事件发送到基础,而是绘制一个与 Parent.BackColor 相同颜色的矩形,那么我会产生控件真的是圆形的错觉。 (作为相关的旁注,我允许透明)
对于我的 RoundMovableSwitch 类,我使用 2 个 RoundRectanglePaths 将 Control 分成两半。左边是绿色,右边是粉红色(现在想起来,我可以只使用水平线性渐变画笔......哦哦哦)然后我在相对的两侧画出 On 和 Off 的字符串。在该控件中,我添加了一个 RoundRectangle。当用户单击 RoundRectangle 或 MoveableSwitch 时,控件会一次将 RoundRectangle 向左或向右移动 1 个像素。运动效果很好。我遇到的问题是这个。 RoundRectangle 的外边缘是正确的透明颜色。内侧边缘颜色错误。请参见下图中的 RoundMovingSwitch 1 和 2。一旦我让代码正常工作,我将返回并重新组织代码。
代码托管在 GitHub 上:Here
【问题讨论】:
标签: c# winforms transparency