2012-11-14 2 views
2

많은 그림을 그림 상자에 표시되는 비트 맵에 맞추려고합니다. 내 실제 코드에서는 모든 것을 포함 할 수있는 사각형의 전체 너비와 높이를 계산 한 다음이를 비트 맵 크기로 나눠서 내 배율 인수를 얻습니다. 문제는 스케일링을 수행하는 방법을 알아낼 수 없다는 것입니다. 아래 코드는 내가해야 할 일의 간단한 버전입니다.전체 그래픽 구조를 축소 (스케일)하는 방법은 무엇입니까?

필자는 picturebox의 스케일링 능력 (스트레치)에 의존 할 수 없다는 것을 명심하십시오. 그리고 실제 코드에서는 모든 스케일의 너비와 높이에 단순히 스케일을 적용하고 싶지 않습니다. 아주 잘 작동합니다. 그래픽에서 축소하는 방법이 필요합니다. 비트 맵은 동일한 크기 (300 X 300)로 유지하는 것이 중요합니다. 감사. 아래의 코드는 지금까지 얻었지만 크기는 변하지 않습니다.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Drawing; 
using System.Windows.Forms; 

namespace WindowsFormsApplication22 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     Bitmap BM = new System.Drawing.Bitmap(300, 300); 
     Pen PenTest = new System.Drawing.Pen(Brushes.Red); 
     private void Form1_Load(object sender, EventArgs e) 
     { 
      using (Graphics GR = Graphics.FromImage(BM)) 
      { 

       GR.DrawRectangle(PenTest, new Rectangle(0,0,500,500)); 

       // I need a scale of 0.60 in this example, because 300/500 = .6 

       GR.ScaleTransform(.6F, .6F);//Doesn't Work. No Change at all in the size of the rectangle. 


      } 


      pictureBox1.Image = BM; 
     } 

    } 
} 
+0

가 먼저 변환 설정하려고 있나요? –

답변

3

Graphics.ScaleTransform 변환을 수행하지만 아무 것도 그려지지 않습니다.

그런 다음이 그래픽에 변환을 수행 한 후 사각형을 그릴 필요가

오브젝트 :

using (Graphics GR = Graphics.FromImage(BM)) 
{ 
    // .... 

    GR.ScaleTransform(.6F, .6F); 
    GR.DrawRectangle(PenTest, new Rectangle(0,0,500,500)); 


} 
+0

감사합니다. 잘됐다. +1 – FrostyFire