Размещение растрового изображения в Canvas в C # [дубликат]

Возможный дубликат:
Как сделать растровое изображение на холсте в WPF?

То, что я хочу, просто. Я хочу разместитьBitmapImage вCanvas в C #. Мое приложение основано на WPF. Я искал это, и я нашел похожие вопросы, но я не мог найти то, что я ищу.

Короче, у меня есть это:

BitmapImage img = new BitmapImage(new Uri("c:\\xyz.jpg"));

И я хочу поместить это в канву, среднее значение не так важно, это может быть прямоугольник или что-то еще.

 mbeckish12 окт. 2012 г., 22:51
@rooter - Пожалуйста, добавьте больше подробностей к вашему вопросу, чтобы нам не приходилось догадываться о том, что вы считаете приемлемым или нет.
 rooter12 окт. 2012 г., 22:52
@ Adriano, что тоже не работает, так как я хочу разместить его в определенном регионе, но не в качестве фоновой картинки.
 oberfreak12 окт. 2012 г., 22:59
добавьте еще один холст, поместите его туда, где вам нравится, и используйте растровое изображение в качестве фона
 Adriano Repetti12 окт. 2012 г., 22:49
@rooter есть другой ответ на этот вопрос, он устанавливает растровое изображение в качестве фона для холста.
 rooter12 окт. 2012 г., 22:45
@mbeckish, что один не имеет значения, я думаю. добавление только растрового изображения не должно быть таким сложным, парень предлагает расширить класс холста. Я ищу более простое решение, так как я работаю над уже написанным кодом и не хочу вносить огромные изменения.

Ответы на вопрос(1)

Решение Вопроса

A BitmapImage объект не может быть расположен внутриCanvas потому что это не контроль. Что вы можете сделать, это получить свой собственный класс изCanvas и переопределитьOnRender() способ нарисовать ваше растровое изображение. В основном как то так:

class CanvasWithBitmap : Canvas
{
    public CanvasWithBitmap()
    {
        _image = new BitmapImage(new Uri(@"c:\xyz.jpg"));
    }

    protected override void OnRender(DrawingContext dc)
    {
        dc.DrawImage(_image,
            new Rect(0, 0, _image.PixelWidth, _image.PixelHeight));
    }

    private BitmapImage _image;
}

Конечно, вам может понадобиться указать путь к файлу и координаты внутриCanvas через свойства. Если вы не хотите объявлять свой собственный класс просто для рисования растрового изображения, вы не можете использоватьBitmapImage класс прямо. Элемент управления для отображения изображенийImageдавайте попробуем это:

BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new Uri(@"c:\xyz.jpg");
bitmap.EndInit();

Image image = new Image();
image.Source = bitmap;

Теперь вы можете поставитьImage контролировать, где вы хотите внутриCanvas.

 rooter12 окт. 2012 г., 23:01
Кажется, что вывод - единственное решение. Благодарю.
 Adriano Repetti12 окт. 2012 г., 23:04
@ Нет, это не так. Если у вас много элементов управления изображением (с одним и тем же изображением), вы можете использовать его для экономии памяти, но вы всегда можете использовать элемент управления изображением.

Ваш ответ на вопрос