Re: Помогите нарисовать облако
От: Аноним  
Дата: 17.02.07 00:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Вывожу при помощи GDI+ кучу разных простейших элементов, типа кружочки, квадратики, и.т.п. Их очень много и чтобы их хоть как-то разделять на группы хочется рисовать их внутри чего-то красивого, например облака. Не подскажите, как это можно сделать?


Как я понял, Вы хотите рисовать в пределах некоторой области. В пространстве имен System.Drawing есть класс Region, который позволяет задать область рисования. При рисовании за ее пределами, весь графический вывод будет отсекаться. Можно создать несколько таких Region-ов и выводить то в один, то в другой. Форма региона может быть любой (даже облаком). Форма региона указывается в конструкторе объекта класса регион:


MyRegion1 = new Region(GP);


Вот здесь GP как раз и задает форму ограничивающего региона. GP это замкнутая фигура любой формы. Это объект класса GraphicPath, который находится в пространстве имен System.Drawing2D. Нужно предварительно создать этот контур с помощью методов этого класса (а там много разных методов: окружности, кривые Безье и т.д). и передать как форму региона. Дальше можно в регионе рисовать. Вот к примеру.


GraphicPath GP = new GraphicPath();
GP.AddArc(1,1,20,50,10,50);      // Добавили окружность к области
GP.AddArc(new Rectangle(30,40,100,56);  // Добавили прямоугольник к области

MyRegion1 = new Region(GP);             // Сделали регион на базе созданной области


Далее нужно указать, что этот регион является ограничивающей областью холста, на котором происходит рисование. Для этого у холста (объекта Graphics) есть свойство Clip.

e.Graphics.Clip = MyRegion1;



Далее все рисование будет происходить в пределах этого региона:

Это в общих словах. Подробнее можно найти в MSDN-е. См. описание классов Region,GraphicPath и пространств имен System.Drawing и System.Drawing2D
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.