Как правильно использовать изображение в качестве всплывающей подсказки?

У меня есть BitmapSource 1690x214 (взят из файла EMF с использованием этого кода), и я хочу использовать это изображение как ToolTip, Это изображение, отображаемое с помощью Paint:

Итак, я написал этот код:

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

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

myTooltip = img;

И вот результат:

Как видите, правый и нижний поля совершенно разные. Зачем? Как я могу решить эту проблему?

1 ответ

Решение

Это похоже на проблему с 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());
    }
}
Другие вопросы по тегам