【问题标题】:c# Override high-contrast for background imagec#覆盖背景图像的高对比度
【发布时间】:2015-02-17 15:51:26
【问题描述】:

我无法找到答案:

我的表单上有一个背景图像,即使系统处于高对比度模式,我也希望它保持可见。是否可以输入覆盖 HC 模式的代码?

我已经在Form Load 事件中尝试过这个,但没有运气——没有图形定义。 (不确定这是否是一个可行的解决方案):

OnPaint: e.Graphics.DrawImage(new Bitmap(BackgroundImage), 0, 0);

除了在我的表单中创建一个 PictureBox 并以这种方式放置图像之外,有没有人知道一种始终显示表单的 BG 图像的方法?

【问题讨论】:

  • “OnPaint”行的意思是你需要把代码放在你表单的OnPaint事件处理程序中
  • @GrawCube 啊,明白了。有没有办法在 FormLoad 事件中获取它?
  • 每次重新绘制表单时都会调用 OnPaint,包括第一次打开时。
  • 我的错,您可能想要覆盖 OnPaint 事件。如果您只是绘制背景,它可能会在 OnPaintBackground 中工作。通过添加这样的方法来覆盖该方法:protected override void OnPaintBackground(PaintEventArgs e)

标签: c# image background contrast


【解决方案1】:

覆盖OnPaintBackground 方法:

protected override void OnPaintBackground(PaintEventArgs e)
{
    e.Graphics.DrawImage(new Bitmap(BackgroundImage), e.ClipRectangle);
}

这个DrawImage 重载将拉伸图像以适应矩形。如果 ClipRectangle 不起作用(抱歉,我现在不能测试这个!),使用背景尺寸创建一个新的 Rectangle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 2014-10-03
    • 2013-05-13
    • 2016-01-14
    • 1970-01-01
    • 2018-10-02
    相关资源
    最近更新 更多