2

私はいくつかのカスタム コントロールを使用していますが、そのうちの 1 つは画像を表示できるツールチップ コントローラーであるため、以下のコードを使用してインスタンス化しています。

Image newImage = Image.FromFile(imagePath);
e.ToolTipImage = newImage;

明らかにインライン化できますが、現時点ではテスト中です。問題は、画像のサイズが時々間違っていることです。表示サイズを設定する方法はありますか。現在確認できる唯一の方法は、GDI+ などを使用して画像を編集することです。実際の画像に影響を与えずに表示サイズを調整したいだけの場合、余分な処理がたくさんあるようです。

4

2 に答える 2

1

イメージ オブジェクトをソースからロードすると、Height と Width (および Size とすべての補助プロパティ) は読み取り専用になります。そのため、RAM でサイズを変更し、それに応じて表示するための GDI+ メソッドに固執しています。

取るべきアプローチはたくさんありますが、この問題が再び発生した場合に再利用できるライブラリにそれをカプセル化する場合は、準備が整います。これは正確には最適化されていません (IE にはいくつかのバグがある可能性があります) が、それにアプローチする方法のアイデアが得られるはずです。

Image newImage = Image.FromFile(myFilePath);
Size outputSize = new Size(200, 200);
Bitmap backgroundBitmap = new Bitmap(outputSize.Width, outputSize.Height);
using (Bitmap tempBitmap = new Bitmap(newImage))
{
    using (Graphics g = Graphics.FromImage(backgroundBitmap))
    {
        g.InterpolationMode = InterpolationMode.HighQualityBicubic;
        // Get the set of points that determine our rectangle for resizing.
        Point[] corners = {
            new Point(0, 0),
            new Point(backgroundBitmap.Width, 0),
            new Point(0, backgroundBitmap.Height)
        };
        g.DrawImage(tempBitmap, corners);
    }
}
this.BackgroundImage = backgroundBitmap;

私はこれをテストしましたが、うまくいきました。(デスクトップの壁紙の 1 つの 200x200 サイズ変更バージョンを作成し、それをスクラッチ WinForms プロジェクトのメイン フォームの背景画像として設定しました。とusingのステートメントが必要です。System.DrawingSystem.Drawing.Drawing2D

于 2008-11-10T15:35:33.377 に答える
0

Winforms では、PictureBox コントロール内に画像を含める場合、PictureBox コントロールを特定の高さ/幅にズームするように設定でき、画像は適合する必要があります。

少なくとも、私が演習を行ったときに、私の Head First C# の本で起こったことです。

于 2008-11-10T15:53:11.063 に答える