Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 186

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 180 181 182 183 184 185 < 186 > 187 188 189 190 191 192 .. 320 >> Следующая

Перетаскивание, проверка попадания в область, занимаемую изображением 455
Таблица 9.27. Методы Add класса GraphicsPath
Метод Назначение
AddArcO Добавляет в создаваемую фигуру дугу — сегмент эллипса
Add?ezier() Добавляют кривую Веэье (или нескольких кривых Безье)
AddBeziers()
AddClosedCurveQ Добавляет замкнутую кривую
AddCurveO Добавляет кривую
AddEllipseO Добавляет эллипс
AddUneO Добавляют прямую линию (несколько прямых линий)
AddLines()
AddPathO Добавляет указанный вами объект GraphicsPath
AddPie() Добавляет сегмент эллипса, образованный дугой эллипса и двумя
радиальными линиями
AddPolygon() Добавляет многоугольник
AddRectangleQ Добавляют прямоугольник (несколько прямоугольников)
AddRectanglesQ
AddStringO Добавляет текстовую строку
Давайте добавим в наше приложение Images объект GraphicsPath. Добавление этот объект элементов будет производиться в конструкторе формы:
public HamFom : System.Windows.Forms.Form {
Il Создаем объект GraphicsPath
GraphicsPath nryPath - new GraphicsPath О;
public Моїпмлш) {
II Добавляем в объект GraphicsPath элементы, из которых он будет
// состоять myPath.StartFigureO:
myPatti.fcWLineCrtew РоШІбО. 10). new Pointu20. 150»;
myPath.AddArc(200. 200, 100, 100, 0. 90):
Point pointl = new PointC250. 250);
Point point2 = new Point(350. 275);
Point point3 = new Point(350, 325);
Point point4 - new PointC250. 350);
Point[] points = (pointl. po1nt2, point3. point4};
myPath.AddCurveipoi nts): myPath.CloseFlgureO;
Г
}
Обратите внимание на вызовы методов Startrtguren и CloseFigureO. Метод StartFigure() сигнализирует о том, что мы начинаем процедурудобавления новых элементов в объект Graph! csPath, а метод CloseFigurei) - об окончании этой процедуры (после чего мы можем приступить к созданию новой фигуры). Если создаваемая при помощи объекта Graphi csPath фигура состоит из непрерывныхлиний (как в нашем случае), то метод CloseFigureO соединяет начальную и конечную точку
фигуры.
460 Глава 9 • Графика становится лучше (GDI+)
Работа с форматами ресурсов .NET
Во всех предыдущих примерах мы работали исключительно с ресурсами (например, изображениями), которые были помещены во внешние файлы. Например,
В классе GraphicsPath определено еще много замечательных членов, но мы сосредоточимся на реализации проверки попадания в область, занимаемую нашим сложным объектом. Получение координат указателя мыши производится без каких-либо проблем при помощи обработчика события MouseDown. А далее сравнить эти координаты с областью, занимаемой объектом GraphicsPath, можно при помощи метода GraphicsPatruIsVi s1Me<) (точно такой же метод можно использовать и для объекта Regi on):
protected void OnMouseDown (object sender, MouseEventArgs e)
і
Il Получаем координаты указателя мыши при щелчке Point mousePt = new PointCe.X. e.Y);
else ff<rnyPath.IsVis1Me(irrousePrj) {
is Imaged і eked - true; imaged і eked - 3;
this.Text = "You clicked the strange shape...":
i"
Последнее, что мы должны сделать, - внести изменения в обработчик события Paint:
private vciu MainForm_?aint(ob.jecl sender. ¦ e)
{
Graphics g = e.Graphics:
Il Выводим ооЧект GraphicsPath
g. Fill Path(Brushes.Al і ceBlue. myPath):
Il Обводим этот объект рамкой (по щелчку)
і f(і slmsgeCIі eked = = true)
{
Pen outline = new Pen (CoI or. red, 5); . sri~di(iF!BC;ECreked)
{
case 3;
g.DrawPath(outline. myPath):
break;
default:
break;
I
}
I
Код приложения Images можно найти в подкаталоге Chapter 9.
Работа с форматами ресурсов 461
в приложении все три выводимых изображения загружались из файлов,
находящихся в каталоге приложения:
// Загружаем изображения из файлов ЬМарІїладеА - new fiitmaptlmageA.bmp"): ЬМарІтадеВ - new Bitmapl "атпадеВ.Ьтр"): ЬМарІтадеС - new Bitmap("imageC.bmp");
При этом в каталоге приложения обязательно должны находиться три файла: imageA.bmp, imageB.bmp и imageC.bmp, как показано на рис. 9.28.
В? D:\CSbarpBoofe\LabV ( li.»j>h¦r 9\lmage>k\bin\Debu<3
[ FjIe Edt yjew Favorites Ioob Цеір ~щ
¦ ^ Back v . . ?1 fj;»»ch U Folders History I ЩІ
JAd*ess [zi D:KSharp9ookyLat»Khapter «Uinaqw^iln^ijbijg

lljiBW^iijp
Debug
3 Items selected. ? ¦m
Total Рїг Sjec: І60 KB Image5.exe Images.pdb
imageA.fatnp imageB.bmp ImageC.bmp
3cb)»cK<) selected |l60 № My Computer
Рис. 9.28. Внешние ресурсы приложения
Если какой-либо из этих файлов будет удален, переименован или перемещен, наше приложение не будет работать (можете проверить сами). Если же поместить ресурсы, необходимые приложению, внутрь самой сборки, мы будем избавлены от подобных проблем.
Как мы помним (глава 6), сборка — это набор типов и необязательнъаресур-сов. Наша задача сейчас — выяснить, каким образом внешние ресурсы (такие как файлы изображений или текстовые строки) могут быть загружены непосредственно в саму сборку. Как правило, если мы собираемся делать это вручную, то нам придется выполнить следующие действия:
• создать файл *.resx в формате в котором будут содержаться пары имя — значение для каждого из ресурсов;
Предыдущая << 1 .. 180 181 182 183 184 185 < 186 > 187 188 189 190 191 192 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100