Top.Mail.Ru
Ответы

C++ Builder ничего не рисует в форме через Canvas (проверьте, код прилагается)

В процессе познания Билдера через книжку Никиты Культина "Самоучитель C++ Builder. - СПб.: БХВ-Петербург, 2004." , где всё достаточно толково написано выписываю примеры из книги, чтобы понять непосредственно как работает та или иная программа. И тут в главе графика вбил первый пример который рисует на поверхности формы олимпийский флаг.
Подскажите что я делаю неправильно, потомучто на поверхности формы ничего не рисуется, хотя всё отлично компилируется и прекрасно запускается. По возможности можете проверить код у себя на вашем Билдере, ибо если у вас нарисует, то переустановлю свой.

код (Unit1.cpp):

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormPaint(TObject *Sender)
{
// полотнище флага
Canvas->Pen->Width = 1;
Canvas->Pen->Color = clWhite;
Canvas->Brush->Color = clCream;
Canvas->Rectangle (30, 30, 150, 150) ;
Canvas->Pen->Width = 2; // ширина колец
Canvas->Brush->Style = bsClear; // чтобы круг, нарисованный методом Ellipse, не был закрашен

// рисуем кольца
Canvas->Pen->Color = clBlue;
Canvas->Ellipse(40,40,80,80) ;
Canvas->Pen->Color = clBlack;
Canvas->Ellipse (70, 40, 110, 80) ;
Canvas->Pen->Color = clRed;
Canvas->Ellipse (100, 40, 140, 80) ;
Canvas->Pen->Color = clYellow;
Canvas->Ellipse (55, 65, 95, 105) ;
Canvas->Pen->Color = clGreen;
Canvas->Ellipse (85, 65, 125, 105) ;
}

код (Unit1.h):

//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <classes.hpp>
#include <controls.hpp>
#include <stdctrls.hpp>
#include <forms.hpp>
#include <extctrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall FormPaint(TObject *Sender);
private:// User declarations
public:// User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

По дате
По Рейтингу
Аватар пользователя
Мастер
16лет

Твой код я поробовал и он работает.. .
Ты попробуй это вписать в событие кнопки.... У меня так тоже получилось.. .
А если вообще не рисует смотри проблему по форумам....