1
Не в сети
Сообщений: 62
Благодарностей: 0
Предупреждений:
Из: --- Москва
Род занятий:

как мне нарисовать что я хочу в битмап что бы потом отобразить за один раз (используя только WPF)

#52606   | 21.09.06 11:53
Не в сети
Сообщений: 861
Благодарностей: 0
Предупреждений:
Из: Russia Нижний Тагил
Род занятий: Учусь

Kulibin_s, Никак! Только через языки програмированя. WPF - это всего лишь графический движок. А XAML - это всего лишь язык разметки. Что либо делать с файлами он не может. Только если отобразить на форме.

#52621   | 21.09.06 13:23
Не в сети
Сообщений: 384
Благодарностей: 9
Предупреждений:
Из: Russia Москва
Род занятий:

Вообще-то говоря в наборе библиотек WPF есть встроенные средства для кодирования изображения в/из различные форматы. Более подробно пока рассказать не могу, но вся информация есть в SDK

#52632   | 21.09.06 14:38
Не в сети
Сообщений: 861
Благодарностей: 0
Предупреждений:
Из: Russia Нижний Тагил
Род занятий: Учусь

Espoir, Согласен, есть. Но сохранить в файл то все равно не удастся.

#52660   | 21.09.06 18:07
Не в сети
Сообщений: 62
Благодарностей: 0
Предупреждений:
Из: --- Москва
Род занятий:

ребята не придерайтесь, думаете я не знаю про языки програмирования, или если бы я спросил как это сделать на GDI+, вы бы тоже мне бы начали про языки расказывать?
вопрос заключался в том как через классы Frame Work 3 это сделать (например в GDI+ можено сделать графикс от битмаки туда всё нарисовать и вперёт, как сделать подобное пока не нашёл, копаюсь уже день, поэтому и спросил, в общем я очень хорошо разбирваюсь в GDI и GDI+ вот решил разобраться с WPF что бы следующий проект делать с его использованием, но в нём совершенно другой принцип работы, вот и возникают вопросы)

#52675   | 21.09.06 20:00
Не в сети
Сообщений: 62
Благодарностей: 0
Предупреждений:
Из: --- Москва
Род занятий:

да кстати в файл как раз мне сохранять не нужно, мне нужно промежуточный битма создать что бы потом его выводить. я смотрел примеры по кодированию из различных форматов, ковырялся с объктами Visual, но вот как сделать тоже для картинки не понятно
Всё это дело нужно вот для чего, на форме очень много грфики (векторный рисунок), если начать менять какой-нибудь один элемент (верхний), то перерисовывается все элементы, всё это дело невероятно тормозно, хотелось бы векторную картинку сохранить в битмап, и при изменении элемента, перерисовывать битмап и только один этот элемент, в таком режиме всё намного быстрее.
если исходя из скорости разового отображения всех векторов, то притензий к WPF нет никаких, перерисовывает быстрее чем GDI+, вот нужно что-то типа буфера

#52676   | 21.09.06 20:06
Не в сети
Сообщений: 384
Благодарностей: 9
Предупреждений:
Из: Russia Москва
Род занятий:

Kulibin_s, ну сколько можно говорить - S D K - если ваше соединение с Internet не позволяет выкачать справочный материал, пользуйтесь онлайн-версией msdn

#52830   | 22.09.06 12:07
Не в сети
Сообщений: 62
Благодарностей: 0
Предупреждений:
Из: --- Москва
Род занятий:

облазил весь sdk ничего пока не нашёл, ну либо не там ищу, может хоть ссылку дайте, или там где-нибудь мелким тестом написано что это сделать нельзя, и вы надо мною прикалываетесь?

#54051   | 26.09.06 20:25
Не в сети
Сообщений: 15
Благодарностей: 0
Предупреждений:
Из: Russia
Род занятий: программист

Создай окно, в него напихай элементв WPF. Ну а потом возможностей масса. Начиная от BitBlt и заканчивая средствами GDI+.

#65558   | 14.11.06 11:31
Не в сети
Сообщений: 15
Благодарностей: 0
Предупреждений:
Из: Russia
Род занятий: программист

Не, можно проще. Со зрением у Вас видимо явные проблемы. Открываем SDK и видим:


RenderTargetBitmap Class

Used to convert a Visual object into a bitmap.
Namespace: System.Windows.Media.Imaging
Assembly: PresentationCore (in presentationcore.dll)
XML Namespace: http://schemas.microsoft.com/winfx/2006/xaml/presentation

Syntax

C#
public sealed class RenderTargetBitmap : BitmapSource

XAML
You cannot use this managed class in XAML.

Example
The following example shows how to use RenderTargetBitmap to render text as an image.

C#

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Globalization;

namespace SDKSample
{
    public partial class RenderTargetBitmapExample : Page
    {
        public RenderTargetBitmapExample()
        {

            Image myImage = new Image();
            FormattedText text = new FormattedText("ABC",
                    new CultureInfo("en-us"),
                    FlowDirection.LeftToRight,
                    new Typeface(this.FontFamily, FontStyles.Normal, FontWeights.Normal, new FontStretch()),
                    this.FontSize,
                    this.Foreground);

            DrawingVisual drawingVisual = new DrawingVisual();
            DrawingContext drawingContext = drawingVisual.RenderOpen();
            drawingContext.DrawText(text, new Point(2, 2));
            drawingContext.Close();

            RenderTargetBitmap bmp = new RenderTargetBitmap(180, 180, 120, 96, PixelFormats.Pbgra32);
            bmp.Render(drawingVisual);
            myImage.Source = bmp;

            // Add Image to the UI
            StackPanel myStackPanel = new StackPanel();
            myStackPanel.Children.Add(myImage);
            this.Content = myStackPanel;
        }
    }
}

#65562   | 14.11.06 11:38
Не в сети
Сообщений: 15
Благодарностей: 0
Предупреждений:
Из: Russia
Род занятий: программист

А если не понятно как RenderTargetBitmap сохранить в файл то вот:

  bmp.Render(drawingVisual);
  JpegBitmapEncoder encoder = new JpegBitmapEncoder();
  encoder.Frames.Add(BitmapFrame.Create(bmp));
  FileStream file = new FileStream(@"C:\output.jpg", FileMode.Create);
  encoder.Save(file);
  file.Close();

#65577   | 14.11.06 11:53
Все права принадлежат © MSInsider.ru (ex TheVista.ru), 2019
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.12 секунд (Общее время SQL: 0.071 секунд - SQL запросов: 70 - Среднее время SQL: 0.00101 секунд))