2

ピクチャボックスに表示されるビットマップに多くの長方形を収めようとしています。私の実際のコードでは、それらすべてを取り囲むことができる長方形の幅と高さの合計を計算し、それをビットマップのサイズで割り、倍率を取得します。問題は、スケーリングを実行する方法がわからないことです。以下のコードは、私がしなければならないことの単純なバージョンです。

ピクチャボックスのスケーリング機能 (ストレッチ) に頼ることはできないことに注意してください。実際のコードではうまく機能しないため、すべての長方形の幅と高さに単純にスケールを適用したくありません。 . グラフィックスで縮小する方法が必要です。ビットマップが同じサイズ (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;
        }

    }
}
4

1 に答える 1

4

Graphics.ScaleTransformは変換を実行しますが、何も描画しません。

グラフィックス オブジェクトで変換を実行した後、四角形を描画する必要があります。

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

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


 }
于 2012-11-15T00:02:54.647 に答える