Энциклопедия C++ Builder


ГРАФИЧЕСКИЕ КОМПОНЕНТЫ - часть 8


ForeColor и заливается цветом свойства BackColor (в нашем случае индикатора со стрелкой Kind = gkNeedle это выполняет функция PaintAsNeedle). Заключительные инструкции устанавливают свойство режима копирования канвы CopyMode, снабжают индикатор текстом (метод PaintAsText) и только затем (с помощью метода Draw)

канва внеэкранного битового образа отображается на экране.

void _fastcall TGauge::Paint()

{

std::auto_ptr<Graphics::TBitmap> Thelmage

(new Graphics::TBitmap() ) ;

std::auto_ptr<TBltBitmap> Overlaylmage (new TBitBitmap());

TRect PaintTRect;

The Image->Height = Height;

TheImage->Width = Width;

PaintBackgroundtThelmage.get()) ;

PaintTRect = ClientRect;

if (FBorderStyle == bsSingle)

InflateRect(&RECT(PaintTRect), -1, -1);

OverlayImage->MakeLike(Thelmage.get() ) ;

PaintBackground(Overlay Image.get());

switch(FKind) {

case gkText:

PaintAsNothing(Overlay Image.get(), PaintTRect); break;

case gkHorizontalBar:

case gkVerticalBar:

PaintAsBar(Overlaylmage.get(), PaintTRect); break;

case gkPie:

PaintAsPie(Overlay Image.get(), PaintTRect); break;

case gkNeedle:

PaintAsNeedle(Overlaylmage.get(), PaintTRect); break;

}

The Image->Canvas->CopyMode = cmSrcInvert;

TheImage->Canvas->Draw(0, 0, Overlaylmage.get()) ;

TheImage->Canvas->CopyMode = cmSrcCopy;

if (ShowText == true)

PaintAsText(Thelmage.get(), PaintTRect);

Canvas->CopyMode = cmSrcCopy;

Canvas->Draw(0, 0, Thelmage.get()) ;

}

Листинг 7 3 Метод рисования на канве компоненты индикатора.

Рис. 7.1 показывает, что текст программы, реализующей перемещение стрелки индикатора по сигналам таймера, состоит всего из двух строк обработчика события OnTimer компоненты TTimer из вкладки System. Первая инструкция функции обработки события Timer1Timer устанавливает значение 1000 (принятое по умолчанию) для односекундного интервала времени объекта Timer1, а вторая инкрементирует значение свойства Progress объекта Gauge 1.

Рис. 7.1. Индчкппюр в виде шкалы со стрелкой (см. свойство Kind).




Начало  Назад  Вперед