Библиотека myPolyBool — различия между версиями
=DeaD= (обсуждение | вклад) (Новая: == Назначение библиотеки == Обеспечить удобные интерфейсные функции для связи объектов POLYBOOLEAN и объек...) |
(нет различий)
|
Версия 09:04, 19 января 2008
Содержание
Назначение библиотеки
Обеспечить удобные интерфейсные функции для связи объектов POLYBOOLEAN и объектов графического интерфейса Windows.
Функции (описание)
mybpDrawPAREA
Показать множество многоугольников PAREA на форме. Позволяет передать смещение и масштаб. Пока внутренние области закрашивает белым цветом (не оставлять там то, что должно было остаться).
mybpDrawPLINE2
Показать область PLINE2 на форме заполненную переданным цветом. Позволяет передать смещение и масштаб.
Файлы библиотеки
myPolyBool.h
<source lang="cpp">
- ifndef myPolyBoolH
- define myPolyBoolH
- include "polybool.h"
- include <ExtCtrls.hpp>
using namespace POLYBOOLEAN;
void mybpDrawPAREA(TImage* img, PAREA* ar, TColor border, TColor area, int shift_x, int shift_y, int scale); void mybpDrawPLINE2(TImage* img, PLINE2* pl, int shift_x, int shift_y, int scale);
- endif
</source>
myPolyBool.cpp
<source lang="cpp">
- pragma hdrstop
//---------------------------------------------------------------------------
- pragma package(smart_init)
- include "myPolyBool.h"
TPoint points[1000]; int size;
void mybpDrawPLINE2(TImage* img, PLINE2* pl, int shift_x, int shift_y, int scale){
VNODE2* cur=pl->head; size=0;
while (cur!=NULL){
points[size].x=cur->g.x*scale+shift_x;
points[size].y=cur->g.y*scale+shift_y;
//Memo1->Lines->Add("x="+IntToStr(points[size].x)+" y="+IntToStr(points[size].y));
size++;
cur=cur->next;
if(cur==pl->head){
points[size].x=cur->g.x*scale+shift_x;
points[size].y=cur->g.y*scale+shift_y;
//points[size].x=0;
//points[size].y=0;
size++;
cur=NULL;
};
};
//img->Canvas->MoveTo(points[0].x,points[0].y);
img->Canvas->Polygon(points,size-1);
};
void mybpDrawPAREA(TImage* img, PAREA* ar, TColor border, TColor area, int shift_x,int shift_y, int scale){
PAREA* curp=ar;
while(curp!=NULL){
img->Canvas->Pen->Color=border;
img->Canvas->Brush->Color=area;
PLINE2* cur=curp->cntr;
while(cur!=NULL){
mybpDrawPLINE2(img, cur, shift_x, shift_y, scale);
cur=cur->next;
img->Canvas->Brush->Color=clWhite;
};
curp=curp->f;
if(curp==ar){curp=NULL;};
};
};
</source>