1

1690x214 (このBitmapSourceコードを使用してEMFファイルから取得)があり、この画像をとして使用したいと思います。これは、ペイントを使用して表示される画像です。ToolTip

ここに画像の説明を入力してください

だから私はこのコードを書いた:

BitmapSource bmp = myBitmapSource; // "Dk01Light.EMF"

Image img = new Image()
{
    Source = bmp,
    Width = bmp.Width,
    Height = bmp.Height,
    Stretch = Stretch.Uniform,
};

myTooltip = img;

そしてこれが結果です:

ここに画像の説明を入力してください

ご覧のとおり、右マージンと下マージンは完全に異なります。なんで?この問題を解決するにはどうすればよいですか?

4

1 に答える 1

2

DPIの問題のようです。まず、画像初期化子から幅と高さを削除してみてください。また、コンテンツに合わせたサイズにする必要があります。

リンクしたコードを次のコードに置き換えて、画像が適切に生成されていることを確認することもできます。

using (System.Drawing.Imaging.Metafile emf = new System.Drawing.Imaging.Metafile(path))
using (System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(emf.Width, emf.Height))
{
    bmp.SetResolution(emf.HorizontalResolution, emf.VerticalResolution);

    using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp))
    {
        g.DrawImage(emf,
            new Rectangle(0, 0, emf.Width, emf.Height),
            new Rectangle(0, 0, emf.Width, emf.Height),
            GraphicsUnit.Pixel
        );

        return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
    }
}
于 2012-06-19T18:43:51.787 に答える