Поиск:

Ответ в темуСоздание новой темы Создание опроса
> передача параметров внутрь функции, при использовании библиотеки GDI+ 
:(
    Опции темы
=Женек=
Дата 29.10.2009, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Господа, есть вопрос. Использую CodeGear2009, рисую с помощью GDI+ на компоненте TImage.

Рисую дугу так:
Код


   Gdiplus::Graphics graphics(Image->Canvas->Handle);
   graphics.SetSmoothingMode(Gdiplus::SmoothingModeAntiAlias);
   Gdiplus::Pen pen(Gdiplus::Color(255, 180, 180, 180));

graphics.DrawArc(&pen, 400-Track*10+5, 400-Track*10+5, Track*20-10, Track*20-10, StartAngle, EndAngle);


Но мне хочется сделать функцию, внутрь которой поместить последнюю в предыдущей цитате строку, возможно еще что-то и вызывать ее так:
Код

void PutArc(int Track, int StartAngle, int EndAngle)
{
graphics.DrawArc(&pen, 400-Track*10+5, 400-Track*10+5, Track*20-10, Track*20-10, StartAngle, EndAngle);

}




ОДнако функция ругается и на pen и на graphics и не понимает, что рисовать нужно на Image.


Заработало только так:

Код

void PutArc(float Track, float StartAngle, float EndAngle)
{
   Gdiplus::Graphics graphics(Form1->Image->Canvas->Handle);
   graphics.SetSmoothingMode(Gdiplus::SmoothingModeAntiAlias);
   Gdiplus::Pen pen(Gdiplus::Color(255, 255, 180, 180));
   pen.SetWidth(8);
   graphics.DrawArc(&pen, 400-Track*10+5, 400-Track*10+5, Track*20-10, Track*20-10, StartAngle, EndAngle);

}



Но, как вы видите, объявление pen и присвоение цвета внутри функции. Как глобализовать graphics и pen или как правильно передавать параметры?

PM MAIL   Вверх
Alca
Дата 29.10.2009, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

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



Код

void PutArc(Gdiplus::Graphics *pGGG) {
    //...
    pGGG->SetSmoothingMode(Gdiplus::SmoothingModeAntiAlias);
    //...
}


Код

Gdiplus::Graphics graphics(Form1->Image->Canvas->Handle);
PutArc(&graphics);


Это сообщение отредактировал(а) Alca - 29.10.2009, 17:01


--------------------
PM WWW ICQ Skype Jabber   Вверх
=Женек=
Дата 29.10.2009, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



И что? Выдаент ошибки:

Код

void PutArc(Gdiplus::Graphics *pGG, int Track, int StartAngle, int EndAngle)

{

   graphics->SetSmoothingMode(Gdiplus::SmoothingModeHighQuality);       ------ [BCC32 Error] WL_Editor.cpp(39): E2316 'graphics' is not a member of 'Gdiplus'

}

//---------------------------------

PutArc(Gdiplus::Graphics &graphics,6,0,360);   ------------[BCC32 Error] WL_Editor.cpp(121): E2108 Improper use of typedef 'Gdiplus::Graphics'



Тема Pen не раскрыта.

Это сообщение отредактировал(а) =Женек= - 29.10.2009, 17:08
PM MAIL   Вверх
Alca
Дата 29.10.2009, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

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



Цитата

Как глобализовать graphics и pen

Либо глобально либо как член класса.

Добавлено через 34 секунды
Я исправил, глянь еще


--------------------
PM WWW ICQ Skype Jabber   Вверх
=Женек=
Дата 29.10.2009, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Тоже исправил вроде работает. А с pen так же?

Добавлено через 1 минуту и 57 секунд
А насчет глобализации пожалуйста поподробнее.
А то я сделал кнопку:

Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
PutArc(&graphics,6,0,360);
}



естественно он не видит graphics.
Как сделать, чтобы ее не надо было передавать из функции в функцию?

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


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

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



Цитата

 А с pen так же?
  smile 


--------------------
PM WWW ICQ Skype Jabber   Вверх
=Женек=
Дата 29.10.2009, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вынес строку 
Код

Gdiplus::Graphics graphics(Form1->Image->Canvas->Handle);


в начало файла, там гнде глобальные переменные - ловлю access violation

Добавлено @ 17:14
В общем вот:
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#include <math.h>
#pragma hdrstop

#include "WL_Editor.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "AdvSmoothPanel"
#define STRICT
#include <windows.h>
#include <algorithm>
using std::min;
using std::max;
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib") Gdiplus::GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR  gdiplusToken;



#pragma link "AdvSmoothLabel"
#pragma link "AdvSmoothScrollBar"
#pragma resource "*.dfm"
TForm1 *Form1;
TColor XColor;
Gdiplus::Graphics graphics(Form1->Image->Canvas->Handle);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------

Gdiplus::GdiplusStartupInput gdiplusStartupInput;

//---------------------------------------------------------------------------

void PutArc(Gdiplus::Graphics *pGG, int Track, int StartAngle, int EndAngle)
{
   pGG->SetSmoothingMode(Gdiplus::SmoothingModeHighQuality);
   Gdiplus::Pen pen(Gdiplus::Color(255, 255, 180, 180));
  pen.SetWidth(8);
   pGG->DrawArc(&pen, 400-Track*10+5, 400-Track*10+5, Track*20-10, Track*20-10, StartAngle, EndAngle);

}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
 // Initialize GDI+.
// GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

Form1->WindowState=wsMaximized;



}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
 //shutdown GDI+
// Gdiplus::GdiplusShutdown(gdiplusToken);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormActivate(TObject *Sender)
{
int i,j;

MainPanel->Width=Form1->ClientWidth-30;
MainPanel->Height=Form1->ClientHeight-10;
Image->Left=MainPanel->Width-900;
PositionPanel->Left=MainPanel->Width-900;
PositionPanel->Top=830;
Image->Width=800;
Image->Height=800;


//   Gdiplus::Graphics graphics(Image->Canvas->Handle);
   graphics.SetSmoothingMode(Gdiplus::SmoothingModeAntiAlias);
   Gdiplus::Pen pen(Gdiplus::Color(255, 180, 180, 180));




for (i = 0; i < 39; i++)
  {
 pen.SetColor(Gdiplus::Color(255, 180, 180, 180));
 pen.SetWidth(1);
    if ((i%10==0) || (i==38))
     {
        //pen.SetWidth(2);
        pen.SetColor(Gdiplus::Color(255, 100, 100, 100));
    }
    graphics.DrawEllipse(&pen, 400-i*10, 400-i*10, i*20, i*20);
  }




float Angle;
int dX,dY;

 for (i = 0; i < 240; i++)
  {
    pen.SetColor(Gdiplus::Color(255, 180, 180, 180));
    pen.SetWidth(1);
    if (i%10==0)
     {
       //pen.SetWidth(2);
       pen.SetColor(Gdiplus::Color(255, 100, 100, 100));
     }
    Angle=1.5*i;
    dX=Cos(Angle*3.141592/180)*380;
    dY=Sin(Angle*3.141592/180)*380;
    graphics.DrawLine(&pen,400,400, 400+dX,400-dY);
  }


//PutArc(&graphics,6,0,360);


 }
//---------------------------------------------------------------------------

void __fastcall TForm1::ImageMouseMove(TObject *Sender, TShiftState Shift, int X,
          int Y)
{
int Track, Sector, prevX,prevY;
double Angle;

prevX=X;prevY=Y;

Track=sqrt(IntPower(400-X,2)+IntPower(400-Y,2))/10;
if (Track<39)
 {
  Angle=ArcTan2(400-Y,X-400)*180/3.141592;
  if (Angle<0) Angle=Angle+360;

  Sector=Angle*240/360;

  LabelX->Caption->Text=IntToStr(X);
  LabelY->Caption->Text=IntToStr(Y);

  LabelTrack->Caption->Text=Track;
  LabelSector->Caption->Text=Sector;

 }

}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button1Click(TObject *Sender)
{
PutArc(&graphics,6,0,360);
}
//---------------------------------------------------------------------------



Добавлено @ 17:17
С цветом тоже не получается: 

Код

void PutArc(Gdiplus::Graphics *pGG, int Track, int StartAngle, int EndAngle, TColor *Color)
{
   pGG->SetSmoothingMode(Gdiplus::SmoothingModeHighQuality);
   Gdiplus::Pen pen(Gdiplus::Color(Color));
  pen.SetWidth(8);
   pGG->DrawArc(&pen, 400-Track*10+5, 400-Track*10+5, Track*20-10, Track*20-10, StartAngle, EndAngle);

}





Это сообщение отредактировал(а) =Женек= - 29.10.2009, 17:18
PM MAIL   Вверх
Alca
Дата 29.10.2009, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

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



Цитата

Как сделать, чтобы ее не надо было передавать из функции в функцию?

Код

//Form1.h
private:
    Gdiplus::Graphics _m_Graphics;

Код

//Form1.cpp
__fastcall Form1::Form1(TComponent* Owner) : 
    TForm                 (Owner),
    _m_Graphics      (Form1->Image->Canvas->Handle) 
{
    //...
}


Добавлено через 4 минуты и 51 секунду
либо

Код

Gdiplus::Graphics *_m_pGraphics;

Код

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    _m_pGraphics = new  Gdiplus::Graphics(Form1->Image->Canvas->Handle);
}
//---------------------------------------------------------------------------


Добавлено через 5 минут и 37 секунд
потом в деструкторе убиваешь указатель

Это сообщение отредактировал(а) Alca - 29.10.2009, 17:20


--------------------
PM WWW ICQ Skype Jabber   Вверх
=Женек=
Дата 29.10.2009, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Alca @ 29.10.2009,  17:17)
Цитата

Как сделать, чтобы ее не надо было передавать из функции в функцию?

Код

//Form1.h
private:
    Gdiplus::Graphics _m_Graphics;

Код

//Form1.cpp
__fastcall Form1::Form1(TComponent* Owner) : 
    TForm                 (Owner),
    _m_Graphics      (Form1->Image->Canvas->Handle) 
{
    //...
}


Добавлено @ 17:22
либо

Код

Gdiplus::Graphics *_m_pGraphics;

Код

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    _m_pGraphics = new  Gdiplus::Graphics(Form1->Image->Canvas->Handle);
}
//---------------------------------------------------------------------------


Добавлено @ 17:23
потом в деструкторе убиваешь указатель

Эх получил на выходе
Код

[BCC32 Error] WL_Editor.h(42): E2090 Qualifier 'Gdiplus' is not a class or namespace name
[BCC32 Error] WL_Editor.h(42): E2040 Declaration terminated incorrectly
[BCC32 Error] iosfwd(254): E2238 Multiple declaration for 'char_traits<wchar_t>::int_type'
[BCC32 Error] iosfwd(136): E2344 Earlier declaration of 'char_traits<wchar_t>::int_type'
[BCC32 Error] iosfwd(260): E2238 Multiple declaration for 'char_traits<wchar_t>::assign(wchar_t &,const wchar_t &)'
[BCC32 Error] iosfwd(141): E2344 Earlier declaration of 'char_traits<wchar_t>::assign(wchar_t &,const wchar_t &)'
[BCC32 Error] iosfwd(265): E2238 Multiple declaration for 'char_traits<wchar_t>::eq(const wchar_t &,const wchar_t &)'
[BCC32 Error] iosfwd(146): E2344 Earlier declaration of 'char_traits<wchar_t>::eq(const wchar_t &,const wchar_t &)'
[BCC32 Error] iosfwd(270): E2238 Multiple declaration for 'char_traits<wchar_t>::lt(const wchar_t &,const wchar_t &)'
[BCC32 Error] iosfwd(151): E2344 Earlier declaration of 'char_traits<wchar_t>::lt(const wchar_t &,const wchar_t &)'
[BCC32 Error] iosfwd(276): E2238 Multiple declaration for 'char_traits<wchar_t>::compare(const wchar_t *,const wchar_t *,unsigned int)'
[BCC32 Error] iosfwd(156): E2344 Earlier declaration of 'char_traits<wchar_t>::compare(const wchar_t *,const wchar_t *,unsigned int)'
[BCC32 Error] iosfwd(283): E2238 Multiple declaration for 'char_traits<wchar_t>::length(const wchar_t *)'
[BCC32 Error] iosfwd(167): E2344 Earlier declaration of 'char_traits<wchar_t>::length(const wchar_t *)'
[BCC32 Error] iosfwd(290): E2238 Multiple declaration for 'char_traits<wchar_t>::copy(wchar_t *,const wchar_t *,unsigned int)'
[BCC32 Error] iosfwd(176): E2344 Earlier declaration of 'char_traits<wchar_t>::copy(wchar_t *,const wchar_t *,unsigned int)'
[BCC32 Error] iosfwd(298): E2238 Multiple declaration for 'char_traits<wchar_t>::find(const wchar_t *,unsigned int,const wchar_t &)'
[BCC32 Error] iosfwd(187): E2344 Earlier declaration of 'char_traits<wchar_t>::find(const wchar_t *,unsigned int,const wchar_t &)'
[BCC32 Error] iosfwd(305): E2238 Multiple declaration for 'char_traits<wchar_t>::move(wchar_t *,const wchar_t *,unsigned int)'
[BCC32 Error] iosfwd(197): E2344 Earlier declaration of 'char_traits<wchar_t>::move(wchar_t *,const wchar_t *,unsigned int)'
[BCC32 Error] iosfwd(312): E2238 Multiple declaration for 'char_traits<wchar_t>::assign(wchar_t *,unsigned int,wchar_t)'
[BCC32 Error] iosfwd(212): E2344 Earlier declaration of 'char_traits<wchar_t>::assign(wchar_t *,unsigned int,wchar_t)'
[BCC32 Error] iosfwd(323): E2238 Multiple declaration for 'char_traits<wchar_t>::to_int_type(const wchar_t &)'
[BCC32 Error] iosfwd(227): E2344 Earlier declaration of 'char_traits<wchar_t>::to_int_type(const wchar_t &)'
[BCC32 Error] iosfwd(334): E2238 Multiple declaration for 'char_traits<wchar_t>::eof()'
[BCC32 Error] iosfwd(238): E2344 Earlier declaration of 'char_traits<wchar_t>::eof()'
[BCC32 Error] iosfwd(355): E2238 Multiple declaration for 'char_traits<char>::assign(char &,const char &)'
[BCC32 Error] iosfwd(141): E2344 Earlier declaration of 'char_traits<char>::assign(char &,const char &)'
[BCC32 Error] iosfwd(360): E2238 Multiple declaration for 'char_traits<char>::eq(const char &,const char &)'
[BCC32 Error] iosfwd(146): E2344 Earlier declaration of 'char_traits<char>::eq(const char &,const char &)'
[BCC32 Error] iosfwd(365): E2238 Multiple declaration for 'char_traits<char>::lt(const char &,const char &)'
[BCC32 Error] iosfwd(151): E2344 Earlier declaration of 'char_traits<char>::lt(const char &,const char &)'
[BCC32 Error] iosfwd(371): E2238 Multiple declaration for 'char_traits<char>::compare(const char *,const char *,unsigned int)'
[BCC32 Error] iosfwd(156): E2344 Earlier declaration of 'char_traits<char>::compare(const char *,const char *,unsigned int)'
[BCC32 Error] iosfwd(378): E2238 Multiple declaration for 'char_traits<char>::length(const char *)'
[BCC32 Error] iosfwd(167): E2344 Earlier declaration of 'char_traits<char>::length(const char *)'
[BCC32 Error] iosfwd(385): E2238 Multiple declaration for 'char_traits<char>::copy(char *,const char *,unsigned int)'
[BCC32 Error] iosfwd(176): E2344 Earlier declaration of 'char_traits<char>::copy(char *,const char *,unsigned int)'
[BCC32 Error] iosfwd(393): E2238 Multiple declaration for 'char_traits<char>::find(const char *,unsigned int,const char &)'
[BCC32 Error] iosfwd(187): E2344 Earlier declaration of 'char_traits<char>::find(const char *,unsigned int,const char &)'
[BCC32 Error] iosfwd(400): E2238 Multiple declaration for 'char_traits<char>::move(char *,const char *,unsigned int)'
[BCC32 Error] iosfwd(197): E2344 Earlier declaration of 'char_traits<char>::move(char *,const char *,unsigned int)'
[BCC32 Error] iosfwd(407): E2238 Multiple declaration for 'char_traits<char>::assign(char *,unsigned int,char)'
[BCC32 Error] iosfwd(212): E2344 Earlier declaration of 'char_traits<char>::assign(char *,unsigned int,char)'
[BCC32 Error] iosfwd(418): E2238 Multiple declaration for 'char_traits<char>::to_int_type(const char &)'
[BCC32 Error] iosfwd(227): E2344 Earlier declaration of 'char_traits<char>::to_int_type(const char &)'
[BCC32 Error] iosfwd(429): E2238 Multiple declaration for 'char_traits<char>::eof()'
[BCC32 Error] iosfwd(238): E2344 Earlier declaration of 'char_traits<char>::eof()'
[BCC32 Error] xutility(345): E2406 Dependent type qualifier 'bool' is not a class or struct type
[BCC32 Error] xutility(346): E2406 Dependent type qualifier 'bool' is not a class or struct type
[BCC32 Error] xutility(346): E2228 Too many error or warning messages


Добавлено через 49 секунд
Второй вариант сейчас попробую
PM MAIL   Вверх
Alca
Дата 29.10.2009, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

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



Код

//Form1.h

#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib") Gdiplus::GdiplusStartupInput gdiplusStartupInput;



--------------------
PM WWW ICQ Skype Jabber   Вверх
=Женек=
Дата 29.10.2009, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib") Gdiplus::GdiplusStartupInput gdiplusStartupInput;



это у меня есть....

Добавлено через 1 минуту и 49 секунд
Сделал второй вариант, все исправил. На строке
   _m_pGraphics->DrawArc(&ppen, 400-Track*10+5, 400-Track*10+5, Track*20-10, Track*20-10, StartAngle, EndAngle);

выдает [BCC32 Error] WL_Editor.cpp(50): E2285 Could not find a match for 'Gdiplus::Graphics::DrawArc(undefined,int,int,int,int,int,int)'


Блин, я вообще мозг сломал, не затруднит показать как втыкать pen и Color ?

Добавлено через 3 минуты и 33 секунды
блин.. исправиль ppen на pen - стало компилиться. Но выдает лажу - две верхние трети канвы закрашены в белый цвет, нижняя треть в серый.

Добавлено через 4 минуты и 59 секунд
вот полный код
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#include <math.h>
#pragma hdrstop

#include "WL_Editor.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "AdvSmoothPanel"
#define STRICT
#include <windows.h>
#include <algorithm>
using std::min;
using std::max;
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib") Gdiplus::GdiplusStartupInput gdiplusStartupInput;

ULONG_PTR  gdiplusToken;



#pragma link "AdvSmoothLabel"
#pragma link "AdvSmoothScrollBar"
#pragma resource "*.dfm"
TForm1 *Form1;
TColor XColor;
Gdiplus::Graphics *_m_pGraphics;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
  _m_pGraphics = new  Gdiplus::Graphics(Form1->Image->Canvas->Handle);



}
//---------------------------------------------------------------------------

Gdiplus::GdiplusStartupInput gdiplusStartupInput;

//---------------------------------------------------------------------------

void PutArc(int Track, int StartAngle, int EndAngle, TColor Color)
{
   _m_pGraphics->SetSmoothingMode(Gdiplus::SmoothingModeHighQuality);
      Gdiplus::Pen pen(Gdiplus::Color(255, 255, 180, 180));
   _m_pGraphics->DrawArc(&pen, 400-Track*10+5, 400-Track*10+5, Track*20-10, Track*20-10, StartAngle, EndAngle);

}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
 // Initialize GDI+.
// GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

Form1->WindowState=wsMaximized;



}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
 //shutdown GDI+
// Gdiplus::GdiplusShutdown(gdiplusToken);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormActivate(TObject *Sender)
{
int i,j;

MainPanel->Width=Form1->ClientWidth-30;
MainPanel->Height=Form1->ClientHeight-10;
Image->Left=MainPanel->Width-900;
PositionPanel->Left=MainPanel->Width-900;
PositionPanel->Top=830;
Image->Width=800;
Image->Height=800;



   _m_pGraphics->SetSmoothingMode(Gdiplus::SmoothingModeAntiAlias);
   Gdiplus::Pen pen(Gdiplus::Color(255, 180, 180, 180));




for (i = 0; i < 39; i++)
  {
 pen.SetColor(Gdiplus::Color(255, 180, 180, 180));
 pen.SetWidth(1);
    if ((i%10==0) || (i==38))
     {
        //pen.SetWidth(2);
        pen.SetColor(Gdiplus::Color(255, 100, 100, 100));
    }
    _m_pGraphics->DrawEllipse(&pen, 400-i*10, 400-i*10, i*20, i*20);
  }




float Angle;
int dX,dY;

 for (i = 0; i < 240; i++)
  {
    pen.SetColor(Gdiplus::Color(255, 180, 180, 180));
    pen.SetWidth(1);
    if (i%10==0)
     {
       //pen.SetWidth(2);
       pen.SetColor(Gdiplus::Color(255, 100, 100, 100));
     }
    Angle=1.5*i;
    dX=Cos(Angle*3.141592/180)*380;
    dY=Sin(Angle*3.141592/180)*380;
    _m_pGraphics->DrawLine(&pen,400,400, 400+dX,400-dY);
  }


//PutArc(6,0,360, clRed);


 }
//---------------------------------------------------------------------------

void __fastcall TForm1::ImageMouseMove(TObject *Sender, TShiftState Shift, int X,
          int Y)
{
int Track, Sector, prevX,prevY;
double Angle;

prevX=X;prevY=Y;

Track=sqrt(IntPower(400-X,2)+IntPower(400-Y,2))/10;
if (Track<39)
 {
  Angle=ArcTan2(400-Y,X-400)*180/3.141592;
  if (Angle<0) Angle=Angle+360;

  Sector=Angle*240/360;

  LabelX->Caption->Text=IntToStr(X);
  LabelY->Caption->Text=IntToStr(Y);

  LabelTrack->Caption->Text=Track;
  LabelSector->Caption->Text=Sector;

 }

}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button1Click(TObject *Sender)
{
//PutArc(&graphics,6,0,360);
}
//---------------------------------------------------------------------------



Добавлено через 7 минут и 17 секунд
При этом вызов DrawArc закомменчиваю. Не рисует даже круги в обработке FormActivate

Добавлено через 14 минут и 42 секунды
Кстати, есть такой ворнинг

[BCC32 Warning] WL_Editor.cpp(18): W8094 Incorrect use of #pragma comment( <type> [,"string"] )
PM MAIL   Вверх
=Женек=
Дата 29.10.2009, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Перемещаю 
Код

  _m_pGraphics = new  Gdiplus::Graphics(Form1->Image->Canvas->Handle);


в обработку FormActivate - рисует, но вызов PutArc в других функциях ничего не рисует.

Это сообщение отредактировал(а) =Женек= - 29.10.2009, 17:59
PM MAIL   Вверх
Alca
Дата 29.10.2009, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

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



Цитата

[BCC32 Warning] WL_Editor.cpp(18): W8094 Incorrect use of #pragma comment( <type> [,"string"] )


Может так все-таки

Код

#pragma comment(lib, "gdiplus.lib") 
//Gdiplus::GdiplusStartupInput gdiplusStartupInput; - это засунуть в класс



--------------------
PM WWW ICQ Skype Jabber   Вверх
=Женек=
Дата 30.10.2009, 06:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я так и сделал, все равно warning вылетает. И не засовывал ничего в класс - программа запускается. А как кстати засунуть в класс?

В общем объявление graphics и pen и последующее рисование (или вызов функции рисования) работают только в пределах одного обработчика. Что делать?
PM MAIL   Вверх
Alca
Дата 30.10.2009, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

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



Цитата

А как кстати засунуть в класс?

Я же тебе писал:
Код

//>>>>>>>>>>>>> Form1.h <<<<<<<<<<<<<<<
#pragma comment(lib, "gdiplus.lib")
...
private: //или public:
    Gdiplus::Graphics *_m_pGraphics;


Это сообщение отредактировал(а) Alca - 30.10.2009, 10:17


--------------------
PM WWW ICQ Skype Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




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


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

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