Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2009, 11:22   #1
antikhrist
Пользователь
 
Регистрация: 23.06.2009
Сообщений: 12
По умолчанию PaintBox. Рисование

Здравствуйте уважаемые форумчане, собственно такая проблема, результатом работы программы на Delphi: По нажатию кнопки появляется прямоугольник (вертикальный), ещё раз нажали кнопку - рядом с предыдущим появляется ещё один такой же и так далее .... Я использую BitBtn и рисоваться прямоугольники должны в PaintBox'е, а не на всей форме. Помогите пожалуйста в реализации или может у кого есть пример чего-то похожего
antikhrist вне форума Ответить с цитированием
Старый 23.06.2009, 11:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Я использую BitBtn
Для чего? Эта функа не рисует прямоугольники а просто перерисовывает уже имеющееся изображение в указанное тобой место.
Прямоугольники рисуются функцией rectangle
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.06.2009, 11:34   #3
mflat
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 71
По умолчанию

Код:
procedure TForm1.FormPaint(Sender: TObject);
begin
with PaintBox1.Canvas do
 begin
  Brush.Color := clWhite;
  Rectangle(0,0,100, 100);
 end;
end;
Такой пример подойдёт?
╓-----┴-----╜
mFlat
mflat вне форума Ответить с цитированием
Старый 23.06.2009, 11:52   #4
antikhrist
Пользователь
 
Регистрация: 23.06.2009
Сообщений: 12
По умолчанию

Уточню задачу: по нажатии кнопки (BitBtn) рисуется прямоугольник, затем ещё раз её нажали рядом нарисовался такой же, и тд, но только в пределах одного PaintBox'а. И как бы была ещё возможность затем эти нарисованные прямоугольники из одного PaintBox'а перетаскивать в другой .... Так что б в новом они появлялись а из другого исчезали %)
antikhrist вне форума Ответить с цитированием
Старый 23.06.2009, 12:09   #5
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Цитата:
with PaintBox1.Canvas do
begin
Brush.Color := clWhite;
Rectangle(x,0,x+100, 100);
Этот код пропиши в виде отдельной процедуры.В обработчике OnClick кнопки BitBtn вызывай эту процедуру и изменяй переменную х (x:= x + 110, к примеру).
Создай еще одну кнопку, по нажатии которой копируй (метод CopyRect) канву одного PaintBox в другой и очищай (Cleare) первый.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 23.06.2009, 12:12   #6
mflat
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 71
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    pb1: TPaintBox;
    pb2: TPaintBox;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  end;

var
  Form1: TForm1;
  x1, y1, x2, y2: integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  pb1.Canvas.Rectangle(x1, y1, x2, y2);
  Dec(x1); Dec(x2); Dec(y1); Dec(y2);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  x1 := 100;
  x2 := 200;
  y1 := 100;
  y2 := 200;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  pb2.Canvas.CopyRect(pb2.ClientRect, pb1.Canvas, pb1.ClientRect);
end;
Сам разберешься?
DeKot, Вы меня опередили
╓-----┴-----╜
mFlat
mflat вне форума Ответить с цитированием
Старый 23.06.2009, 12:25   #7
antikhrist
Пользователь
 
Регистрация: 23.06.2009
Сообщений: 12
По умолчанию

если честно, то как-то не сильно получилось разобраться.(((( Скомпилилось всё, но не рисует (((
antikhrist вне форума Ответить с цитированием
Старый 23.06.2009, 12:30   #8
mflat
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 71
По умолчанию

Исходный код в архиве. Всё работает.
Вложения
Тип файла: rar Ameba.rar (998 байт, 42 просмотров)
╓-----┴-----╜
mFlat
mflat вне форума Ответить с цитированием
Старый 23.06.2009, 12:37   #9
antikhrist
Пользователь
 
Регистрация: 23.06.2009
Сообщений: 12
По умолчанию

Спасибо большое за помощь, но тут как бы я повторюсь по уточнению, что перетаскивать так что б с одного они исчезали а в другом появлялись, и очень желательно перетаскивать мышью, тоесть кнопка перетащить как такова не нужна..... и перетаскиваться не все сразу а по одному... %) вот такая нелёгкая задача Помогите плиз! mflat, большое спасибо и очень надеюсь на твою помощь
antikhrist вне форума Ответить с цитированием
Старый 23.06.2009, 12:40   #10
mflat
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 71
По умолчанию

Просто дополни этот код:
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
  pb2.Canvas.CopyRect(pb2.ClientRect, pb1.Canvas, pb1.ClientRect);
  pb1.Canvas.FillRect(Rect(0,0,200, 200));
end;
Ну если уж помог, нажми пожалуйста на весы слева, и я буду тебе благодарен
С помощью мышки пока не знаю как, но сейчас попробую сделать.
╓-----┴-----╜
mFlat
mflat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PaintBox..курсовая 1 курс Кровава роза Помощь студентам 3 03.06.2009 20:04
Из listBox в paintbox в Билдере slonik123 Общие вопросы C/C++ 0 09.03.2009 15:12
Paintbox lacost Мультимедиа в Delphi 3 14.01.2009 09:53
Подлый PaintBox Fre5h Компоненты Delphi 2 09.11.2008 22:52
paintbox steck Общие вопросы Delphi 5 28.10.2007 16:15