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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отрисовка объектов за пределами Canvas, вопрос новичка 
:(
    Опции темы
RuBoris
Дата 23.1.2009, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Привет всем.
Скажите, можно ли изменить такую особенность отрисовки: когда я рисую какой-нибудь объект например прямоугольник, он выходит за пределы Canvas. Как сделать чтобы прямоуголник не покинул область Canvas, а просто обрезался?

Вот такой фрагмент XAML:
Код

<Grid Width="443.191" Height="316.809">
    <Canvas Name="MyCanvas" Background="LightGray" Margin="66.5,57,86.521,116.638" >
    <Rectangle Width="100" Height="200" Fill="DarkGray" />
    </Canvas>
</Grid>

PM MAIL   Вверх
rooks
Дата 25.1.2009, 02:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код
<Canvas ... ClipToBounds="True">

PM MAIL ICQ   Вверх
RuBoris
Дата 27.1.2009, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



хмм...а у меня такого свойства не видно, вот такая ошибка:
Unknown attribute ClipToBounds on element Canvas.

нашел один не очень красивый метод:
в xaml делаем такое объявление
Код

<Grid Width="443.191" Height="316.809">
    <Canvas Name="MyCanvas" Background="LightGray" Margin="66.5,57,86.521,116.638" >
       <Canvas.Clip>
           <RectangleGeometry Name="MyRect"/>
    </Canvas.Clip>
       <Rectangle Width="100" Height="200" Fill="DarkGray" />
    </Canvas>
</Grid>


а потом в коде
Код

MyRect.Rect = new Rect(0,0,300,300);


в качестве значений конструктору для Rect можно передавать MyCanvas.ActualHeight и MyCanvas.ActualWidth,...вот только откуда достать значения((
ведь при наступлении события MyCanvas.Loaded значения MyCanvas.ActualHeight и MyCanvas.ActualWidth еще не инициализированы

ЗЫ: помогите плиз


Это сообщение отредактировал(а) RuBoris - 27.1.2009, 17:17
PM MAIL   Вверх
RuBoris
Дата 2.2.2009, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всё очень просто оказалось, я просто не обратил внимание на то, что у меня позиционирование задается с помощью свойства Margin. Чтобы получить размеры Canvas при инициализации нужно явно ей задать свойства Width и Height
Код

<Canvas Name="MyCanvas" Width="100" Height="50">
  <Canvas.Clip>
    <RectangleGeometry Name="MyRect"/>
  </Canvas.Clip>
...


Это сообщение отредактировал(а) RuBoris - 2.2.2009, 12:26
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




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


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

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