Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение изображения элемента WPF, Сохранение образа элемента WPF 
:(
    Опции темы
ad12
Дата 19.7.2010, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 19.7.2010

Репутация: нет
Всего: нет



Нужно сохранить изображение элемента WPF в другом элементе. 
То есть - аналог функции System.Windows.Forms.Control.DrawToBitmap(Bitmap target) для WPF.

Если делать с помощью VisualBtush (как-то так):
VisualBrush v_b = new VisualBrush();
v_b.Visual = myControl;
// затем создаю новый контрол (допустим TextBlock)
TextBlock tb = new TextBlock();
// и в бэкграунд загоняю VisualBrush
tb.Background = v_b;

Всё работает, НО!   smile 
VisualBrush отслеживает изменения во внешнем виде исходного элемента myControl!

Кто-нибудь знает, как сделать, чтобы НЕ отслеживало, т.е. бэкграунд текстблока оставался как нарисовано 1 раз?

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

Visual Studio 2008. 
PM MAIL   Вверх
Andrey44
Дата 20.7.2010, 06:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: нет
Всего: 26



Код

<Border Width="185" Height="32"HorizontalAlignment="Center">
            <Border.Background>
                <VisualBrush Visual="{Binding ElementName=ID_TextBox}">
                    <VisualBrush.Transform>
                        <ScaleTransform ScaleX="1" ScaleY="-1" CenterX="20" CenterY="15"></ScaleTransform>
                    </VisualBrush.Transform>
                </VisualBrush>
            </Border.Background>
            <Border.OpacityMask>
                <LinearGradientBrush StartPoint="0,0" EndPoint="0,1" Opacity="0.7">
                    <GradientStop Offset="0" Color="Black"></GradientStop>
                    <GradientStop Offset="0.5" Color="Transparent"></GradientStop>
                </LinearGradientBrush>
            </Border.OpacityMask>
        </Border>

Это так, чисто для примера, можешь поэксперементировать. Это я делал отражение от своих контролов.


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
ad12
Дата 20.7.2010, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 19.7.2010

Репутация: нет
Всего: нет



Спасибо.
Но речь о том, что это нужно делать программно по событию.
Допустим, при нажатии на Button создаётся новый текстблок и в его фон загоняется текущее изображение другого существующего контрола (например, Grid). Теперь у  созданного текстблока фон = изображению Grid'а. Дальше изображение на Grid'е меняется, но на текстблоке остаётся неизменным (до тех пор, пока не нажат опять Button).
Вот.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0690 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.