-1

我在“创建屏幕放大镜”的帖子中遵循了以下内容。

因此我有这个代码。它不是从帖子中复制和粘贴的。我还添加了一个计时器,所以表格不是空白的。但是我发现了一些问题。

  1. 它不会放大很多。我想要更大的变焦。可调节的缩放设置将是最佳设置,但如果我知道如何放大更多,我可以自己制作。
  2. 表单的中心并不总是像我想要的那样是光标的尖端。无论如何我可以解决这个问题吗?

这是我现在得到的代码。

Graphics g;
Bitmap bmp;
private void Timer1_Tick(object sender, EventArgs e)
{
    bmp = new Bitmap(250, 200);
    g = this.CreateGraphics();
    g = Graphics.FromImage(bmp);
    g.CopyFromScreen(MousePosition.X , MousePosition.Y , 0, 0, new Size(300, 300));
    pictureBox1.Image = bmp;
}

结果似乎与我在研究期间发现的这个软件完全相同。链接,它带你到一个日本网页。

4

1 回答 1

1

您将不得不使用示例中的各种数字来查看它们对输出的影响。将它们转换为变量会有所帮助,这样您就可以更轻松地使用它们。这是一个好的开始,没有保证它会起作用,但它会给你一个开始试验的好地方,直到你得到你想要的。

Graphics g;
Bitmap bmp;
private void Timer1_Tick(object sender, EventArgs e)
{
    var endWidth = 300;
    var endHeight = 300;

    var scaleFactor = 2; //perhaps get this value from a const, or an on screen slider

    var startWidth = endWidth / scaleFactor;
    var startHeight = endHeight / scaleFactor;

    bmp = new Bitmap(startWidth, startHeight);

    g = this.CreateGraphics();
    g = Graphics.FromImage(bmp);

    var xPos = Math.Max(0, MousePosition.X - (startWidth/2)); // divide by two in order to center
    var yPos = Math.Max(0, MousePosition.Y - (startHeight/2));

    g.CopyFromScreen(xPos, yPos, 0, 0, new Size(endWidth, endWidth));
    pictureBox1.Image = bmp;
}
于 2015-08-29T12:19:22.903 回答