Поиск:

Ответ в темуСоздание новой темы Создание опроса
> рисование в виде цвета и заливки, задача рисования клеток как компонентов 
:(
    Опции темы
wlad
Дата 29.3.2008, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Господа!

Это Влад, некогда здесь уже выступавший... Если можно: сейчас передо мной задача по созданию компоненты в виде простой клетки, имеющей цвет, и, идеальный вариант - заливку.. И чтобы она описывалась некими целочисленными параметрами... 

С уважением
Влад
PM MAIL   Вверх
orthrus
Дата 30.3.2008, 06:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

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



дак сделай небольшой класс, который будет рисовать на форме клетку. Например, вот такой:
CCell.h
Код

#ifndef _CCell_H_
#define _CCell_H_
#include <Graphics.hpp>
//---------------------------------------------------------------------------
class CCell
{
private:
        int X; //координата левого угла ячейки по Х
        int Y; //координата левого угла ячейки по Y
        unsigned short Height; //Высота ячейки
        unsigned short Width; //Длинна ячейки
        unsigned int BorderColor; //Цвет границы ячейки
        unsigned int FillColor;   //Цвет заполнителя ячейки
        bool Visible; //Рисовать или нет ячейку
        TCanvas* Canvas; //канва на которой рисуем ячейку
public:
       CCell();
       CCell( TCanvas* /*канва на которой рисуем ячейку*/,
              unsigned int /*Цвет границы ячейки*/,
              unsigned int /*Цвет заполнителя ячейки*/,
              int x, int y, /*положение верхнего левого угла ячейки*/
              unsigned short /*Высота ячейки*/,
              unsigned short /*Длинна ячейки*/);
       void SetVisible(bool /*true или false*/);
       void SetX(int x){ X = x; }; //Установить новое значение Х
       void SetY(int y){ Y = y; }; //Установить новое значение Y
       int GetX(){ return X; }; //Вернуть текущее значение Х
       int GetY(){ return Y; }; //Вернуть текущее значение Y
       void Paint();//Нарисовать ячейку
};
#endif //_CCell_H_

CCell.cpp
Код

#include "CCell.h"
//---------------------------------------------------------------------------
CCell::CCell()
{
 X = Y = 0;
 Height = Width = 0;
 FillColor = BorderColor = 0x00FFFFFF;
 Visible = true;
 Canvas = NULL;
}
//---------------------------------------------------------------------------
CCell::CCell( TCanvas* canv, unsigned int bc,unsigned int fc,
              int x, int y, unsigned short h,unsigned short w)
{
 Canvas = canv;
 BorderColor = bc;
 FillColor = fc;
 Visible = true;
 X = x;
 Y = y;
 Height = h;
 Width = w;
}
//---------------------------------------------------------------------------
void CCell::SetVisible(bool vis)
{
 Visible = vis;
}
//---------------------------------------------------------------------------
void CCell::Paint()
{
 if (NULL != Canvas)
 {
  if (Visible){
     Canvas->Pen->Color = TColor(BorderColor);
     Canvas->Brush->Color = TColor(FillColor);
     Canvas->Rectangle(X,Y,Height,Width);
     Canvas->Refresh();
     }
 }
// else {}
}

Использовать можно так:
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 CCell *cell = new CCell(this->Canvas,clGreen,clYellow,10,10,40,40);
 cell->Paint();
}



Это сообщение отредактировал(а) orthrus - 30.3.2008, 06:12


--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
Doga
Дата 31.3.2008, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 20.12.2007
Где: Россия, Обнинск

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



Привет. 

Для одной клетки - неплохой вариант TShape. Если же нужен массив клеток (напр. типа шахматной доски), можно воспользоваться каким-нибудь гридом, с ручной прорисовкой его ячеек (TDrawGrid, TRxDrawGrid, TRGrid, TAdvStringGrid)...
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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