屏幕色调

时间:2009-07-17 14:34:33

标签: vb.net winforms

在stackoverflow社区的帮助下,我设计了一个为屏幕着色的应用程序,让它看起来像是戴着不同颜色的眼镜。

我还希望添加功能而不是整个屏幕着色,只为文档的背景着色,就像这个程序一样:

http://www.thomson-software-solutions.com/html/screen_tinter.html

任何人都有任何线索如何在vb.net中做到这一点?

2 个答案:

答案 0 :(得分:2)

这是一个非常简单的技巧,它只是取代了用于窗口背景的系统颜色。你可以通过P /调用SetSysColor()API函数来改变它。这是一个演示该技术的示例Windows窗体应用程序。启动一个新的WF应用程序并在表单上放置一个按钮。然后粘贴此代码:

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WindowsFormsApplication1 {
  public partial class Form1 : Form {
    int oldcolor;
    public Form1() {
      InitializeComponent();
      oldcolor = GetSysColor(COLOR_WINDOW);
      this.FormClosed += new FormClosedEventHandler(Form1_FormClosed);
      this.button1.Click += new EventHandler(button1_Click);
    }

    private void Form1_FormClosed(object sender, FormClosedEventArgs e) {
      int element = COLOR_WINDOW;
      SetSysColors(1, ref element, ref oldcolor);
    }

    private int Color2COLORREF(Color color) {
      return color.R | (color.G << 8) | (color.B << 0x10);
    }

    private void button1_Click(object sender, EventArgs e) {
      int element = COLOR_WINDOW;
      int colorref = Color2COLORREF(Color.NavajoWhite);
      SetSysColors(1, ref element, ref colorref);
    }

    private const int COLOR_WINDOW = 5;
    [DllImport("user32.dll")]
    private static extern bool SetSysColors(int one, ref int element, ref int color);
    [DllImport("user32.dll")]
    private static extern int GetSysColor(int element);

  }
}

答案 1 :(得分:1)

Offtopic,但您可以将Word更改为默认为“White on Blue”。蓝色背景,白色文本。