【问题标题】:Movable Rectangle or Label可移动矩形或标签
【发布时间】:2011-10-05 08:27:18
【问题描述】:

我正在用 Visual C# 2010 编写一个程序,该程序在表单上有几个图标。当鼠标放在图标(这只是一个图像)上时,我希望通过图标周围的边框突出显示图标。在visual basic中,我可以制作一个带有彩色边框的透明矩形并将其放置在图标上。在 C# 中,我可以做同样的事情,但是直到我调用无效的多个边框出现。调用 invalidate 的问题是我的程序每秒都在后台执行某些操作,因此边框不断闪烁(重新绘制)。

有人知道我如何实现这个吗?

【问题讨论】:

  • 这很模糊。只需使用 ListView,它已经能够在网格中显示图标并突出显示它们。使用 View = Large 或 View = Tile。

标签: c# winforms highlight


【解决方案1】:

您没有说如何绘制边框,但根据您的描述,您正在为此创建图形上下文。不要这样做,这是错误的。而是在控件或其父容器的 Paint 元素内绘制。

Paint 事件处理程序如下所示:

private void yourControl_Paint(object sender, PaintEventArgs e)
{
    if (! HasFocus(yourControl))
        return;
    Graphics g = e.Graphics;
    using (Pen p = new Pen(Color.FromArgb(128, 0, 0, 128)))
        g.DrawRectangle(p, 0, 0, yourControl.Width -1, yourControl.Height - 1);
}

这使用一个假设的HasFocus 方法来确定此控件是否应该具有焦点矩形。

顺便说一句,这在 VB 和 C# 中是相同的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多