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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2010, 21:32   #1
Sanakan
Пользователь
 
Регистрация: 03.12.2008
Сообщений: 47
По умолчанию Дин. создание Shape

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  x1,y1,x2,y2,tmp,count:integer;
  Shp:TSHape;

implementation

{$R *.dfm}

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
tmp:=0;
count:=count+1;
Shp:=TShape.Create(self);
Shp.Parent:=Form1;
Shp.Brush.Color:=clGreen;
Shp.Name:='Shp'+IntToStr(count);
if (x1<x2) and (y1<y2) then
  begin
  Shp.Top:=y1;
  Shp.Left:=x1;
  Shp.Width:=x2-x1;
  Shp.Height:=y2-y1;
  end;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if tmp=1 then
  begin
    x2:=x;
    y2:=y;
    Refresh;
    Image1.Canvas.Rectangle(x1,y1,x,y);
  end;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
tmp:=1;
x1:=X;
y1:=Y;
end;

end.
Создаю дин. шейпы по выделенной области на имадже. Проблема при прорисовки выделенной области на канве при новых x2 , y2. Старые шейпы остаються да и идет мерцания имаджа. Как это исправить? Или как это лучше сделать ? Заранее Спасибо!
Sanakan вне форума Ответить с цитированием
Старый 13.02.2010, 00:10   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

TImage для других целей предназначен. Рисовать на форме или PaintBox, а Refresh убрать - не нужен. Мерцания не будет.
Скандербег вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рисование на Shape Stark[SG!] Мультимедиа в Delphi 8 09.06.2011 13:22
Pascal цикл с Shape.Left and Shape.Top BanzoO Помощь студентам 1 13.12.2009 21:47
Программа на Дин.стурктуры Turok Паскаль, Turbo Pascal, PascalABC.NET 2 11.06.2008 12:17
Дин.стуктуры и файлы. pascal velgelmina Помощь студентам 5 07.06.2007 21:54
Проблема с модулями и дин.структурами данных velgelmina Помощь студентам 1 16.05.2007 06:43