2015-08-29 88 views
-1

我在"Creating a screen magnifier"的帖子中關注了以下內容。如何在C#中製作一個簡單的放大鏡#

因此我有這段代碼。 這不是從帖子粘貼的複製&。我還添加了一個計時器,所以表單不是空白的。 但是我發現了一些問題。

  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; 
} 

結果似乎是一模一樣的這個軟件,我在我的研究過程中發現的。 the link,它會將您帶到日文網頁。

回答

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; 
} 
相關問題