我在"Creating a screen magnifier"的帖子中关注了以下内容。
因此我有这个代码。 它不是副本和贴在帖子上。我还添加了一个计时器,因此表单不是空白。 但是我发现了一些问题。
这是我现在的代码。
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;
}
结果似乎与我在研究过程中发现的这个软件完全相同。the link,它带你到日本网页。
答案 0 :(得分: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;
}