![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 28.06.2011
Сообщений: 3
|
![]()
Form1->Image1->Canvas->Pen->Whidth=6 задаётся в коде самой программы, а как прописать чтобы через edit пользователь задавал свои параметры ширины линии...
Последний раз редактировалось ЛиКЁР; 28.06.2011 в 12:27. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 12.06.2008
Сообщений: 76
|
![]() Код:
Последний раз редактировалось Dogmat; 28.06.2011 в 15:24. |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 28.06.2011
Сообщений: 3
|
![]()
//---------------------------------------------------------------------------
#include <vcl.h> #include <iostream.h> #include <string.h> #include <cstring.h> #include <CONIO.H> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; int i,j,n,m,s1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } class my{ public: void draw(int xx1, int yy1, int xx2, int yy2, int xx3, int yy3); void draw(int xx1, int yy1, int xx2, int yy2, int xx3, int yy3, int col); void draw(int xx1, int yy1, int xx2, int yy2, int xx3, int yy3, AnsiString s); }; void my: ![]() Form1->Image1->Canvas->Pen->Color=clRed; Form1->Image1->Canvas->Pen->Style<<fsBold; Form1->Image1->Canvas->Pen->Width=6; TPoint points[3]; points[0]=TPoint(xx1,yy1); points[1]=TPoint(xx2,yy2); points[2]=TPoint(xx3,yy3); Form1->Image1->Canvas->Polygon(points,3); }; void my: ![]() Form1->Image1->Canvas->Pen->Color=clGreen; Form1->Image1->Canvas->Pen->Style<<fsBold; Form1->Image1->Canvas->Pen->Width=6; if(col==1){Form1->Image1->Canvas->Brush->Color=clRed;} if(col==2){Form1->Image1->Canvas->Brush->Color=clBlue;} if(col==3){Form1->Image1->Canvas->Brush->Color=clGreen;} TPoint points[3]; points[0]=TPoint(xx1,yy1); points[1]=TPoint(xx2,yy2); points[2]=TPoint(xx3,yy3); Form1->Image1->Canvas->Polygon(points,3); if(col==1){ Form1->Image1->Canvas->FloodFill(int((xx1+xx2)/2),int((yy1+yy2)/2),clRed,fsSurface);} if(col==2){ Form1->Image1->Canvas->FloodFill(int((xx1+xx2)/2),int((yy1+yy2)/2),clBlue,fsSurface);} if(col==3){ Form1->Image1->Canvas->FloodFill(int((xx1+xx2)/2),int((yy1+yy2)/2),clGreen,fsSurface);} } void my: ![]() Form1->Image1->Canvas->Pen->Color=clBlack; Form1->Image1->Canvas->Pen->Style<<fsBold; Form1->Image1->Canvas->Pen->Width=6; using namespace Windows; TPoint points[3]; points[0]=TPoint(xx1,yy1); points[1]=TPoint(xx2,yy2); points[2]=TPoint(xx3,yy3); Form1->Image1->Canvas->Polygon(points,3); Form1->Image1->Canvas->Brush->Color=clWhite; Form1->Image1->Canvas->Pen->Color=clBlack; Form1->Image1->Canvas->Pen->Style<<fsBold; Form1->Image1->Canvas->Pen->Width=6; Form1->Image1->Canvas->TextOutA((xx1+yy3)+10,int((yy1+xx1 +xx3)/2),s); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { int x1,y1,x2,y2,x3,y3; my ob; if(Edit1->Text=="" || Edit2->Text=="" || Edit3->Text=="" || Edit4->Text==""){ Application->MessageBoxA("Данные не введены","Внимание",MB_OK); } else{ x1=StrToInt(Edit1->Text); y1=StrToInt(Edit2->Text); x2=StrToInt(Edit2->Text); y2=StrToInt(Edit3->Text); x3=StrToInt(Edit3->Text); y3=StrToInt(Edit4->Text); Application->MessageBoxA("Данные введены","Внимание",MB_OK); ob.draw(x1,y1,x2,y2,x3,y3); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { int x1,y1,x2,y2,x3,y3,c; my ob; if((Edit1->Text=="")||(Edit2->Text=="")||(Edit3->Text=="")||(Edit4->Text=="")||(Edit5->Text=="")||(ComboBox1->Text=="")){ Application->MessageBoxA("Данные не введены Выбирите цвет",MB_OK); } else{ c=ComboBox1->ItemIndex+1; x1=StrToInt(Edit1->Text); y1=StrToInt(Edit2->Text); x2=StrToInt(Edit2->Text); y2=StrToInt(Edit3->Text); x3=StrToInt(Edit3->Text); y3=StrToInt(Edit4->Text); Application->MessageBoxA("Данные введены",MB_OK); ob.draw(x1,y1,x2,y2,x3,y3,c); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { int x1,y1,x2,y2,x3,y3,s; AnsiString s1; my ob; if((Edit1->Text=="")||(Edit2->Text=="")||(Edit3->Text=="")||(Edit4->Text=="")||(Edit5->Text=="")){ Application->MessageBoxA("Данные не введены","Внимание",MB_OK); } else { s1=Edit5->Text; x1=StrToInt(Edit1->Text); y1=StrToInt(Edit2->Text); x2=StrToInt(Edit2->Text); y2=StrToInt(Edit3->Text); x3=StrToInt(Edit3->Text); y3=StrToInt(Edit4->Text); Application->MessageBoxA("Данные введены","Внимание",MB_OK); ob.draw(x1,y1,x2,y2,x3,y3,s1); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) { Form1->Image1->Canvas->FillRect(Rect(0,0,Image1->Width,Image1->Height)); } //--------------------------------------------------------------------------- и куда его тут =((( |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 12.06.2008
Сообщений: 76
|
![]()
Вообще, не есть хорошо, что вы внутри функции члена класса my обращаетесь к полям экземпляра другого класса (TForm1 *Form1) напрямую в то время, как он не является полем класса my.
Сделайте функции draw, членами TForm1. И внутри тела функции draw уберите настройки канвы, в частности ваш Pen->Width, коли хотите регулировать его из эдита. Ну и добавте куда вам нужно на форму TEdit. Или создавайте TEdit динамически, как у меня. Опишите для него обработчики событий OnKeyPress и OnChange, как у меня. Названия, только переменных подправте и все. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 12.06.2008
Сообщений: 76
|
![]()
Ну или, если так приспичело. Создайте в классе my поле с указателем на картинку или вообще на канву. Сделайте функцию-член инициализирующую это поле и в теле draw обращайтесь к этой канве или картинке.
|
![]() |
![]() |
![]() |
#6 |
Новичок
Джуниор
Регистрация: 28.06.2011
Сообщений: 3
|
![]()
ну я понимаю, просто задание создать собственный класс, содержащий перегруженные методы...
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 12.06.2008
Сообщений: 76
|
![]()
ну и заведите какой-нибудь TImage *image или TCanvas *canvas.
Код:
Если работаете с экземплярами классов унаследованных от TObject, может так же стоит унаследоваться от TObject. Последний раз редактировалось Dogmat; 28.06.2011 в 16:01. |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 12.06.2008
Сообщений: 76
|
![]()
Кстати, код на форуме оформляйте со специальным тегом (иконка с символом # при редактировании сообщения). А то съедят.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
VBA удалить столбцы, задать фикс. ширину столбца и задать перенос по словам | johny_03 | Microsoft Office Excel | 1 | 14.04.2011 20:53 |
как задать ширину div'a | Arassir | HTML и CSS | 3 | 22.01.2011 11:12 |
Как задать ширину полей DropDownBox для TDBLookupComboboxEh? | altcore | БД в Delphi | 11 | 26.10.2010 00:08 |
Как сделать чтобы макрос выполнялся сам каждые 10 минут? | Град | SQL, базы данных | 0 | 26.05.2008 16:12 |