Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Графический редактор, Аналог Фотошопа, Delphi 
V
    Опции темы
okamor71
Дата 15.10.2006, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго дня всем, народ помогите, нужно срочно накатать програмульку в виде граф. редактора по аналогии с фотошоп, пракчиски все сделал кроме одного: как реализовать слойность, и при необходимости двигать выбраным слоем. 
PM MAIL ICQ   Вверх
Alexeis
Дата 15.10.2006, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(okamor71 @  15.10.2006,  08:42 Найти цитируемый пост)
при необходимости двигать выбраным

Проще всего я думаю размесить, каждый слой в своем TImage и перемещать целиком компонент, тем более у него есть события, onMouseDown, onMouseUp, onMouseMove.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
okamor71
Дата 15.10.2006, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



alexeis1, а как их потом объеденить в одну картинку????????
PM MAIL ICQ   Вверх
Alexeis
Дата 15.10.2006, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Скопировать изображение из одной канвы в другую. Есть функция CopyRect для этого.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
CrazyIvan
Дата 16.10.2006, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Имхо лучше создать в памяти коллекцию битмапов, а потом рисовать их в необходимой последовательности. Т.к. целый TImage это дорого в плане памяти.
Да и могут быть проблемы с наложением огромного количества TImage друг на друга. Лучше это возложить на собственный "движок".
PM MAIL   Вверх
Alexeis
Дата 16.10.2006, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(CrazyIvan @  16.10.2006,  13:04 Найти цитируемый пост)
Лучше это возложить на собственный "движок". 

Собственный движок всегда лучше, но сложнее.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
okamor71
Дата 17.10.2006, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



alexeis1, не подскажите еще как мне реализовать перемещение TImage, по нажатию кнопки мыши и прекритить когд кнопку отпустил, если мона то помогите сурсом, а то с графикой практичеки не работал на дельфи
PM MAIL ICQ   Вверх
Alexeis
Дата 17.10.2006, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



okamor71, тут графика не при чем
Нужно присвоить компоненту TImage обработчики 
MouseDown
MouseMove
MouseUp
Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Image: TImage;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure ImageMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  fl : boolean = false;
  X0, Y0 : Integer;

procedure TForm1.ImageMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  fl := true;
  X0 := X;
  Y0 := Y;
end;

procedure TForm1.ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if fl
  then
    Begin
     (Sender as TImage).Left := X - X0 + (Sender as TImage).Left;
     (Sender as TImage).Top  := Y - Y0 + (Sender as TImage).Top;
    end;
end;

procedure TForm1.ImageMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  fl := false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  image.Canvas.LineTo(100,100);
  form1.DoubleBuffered := true;
  image.OnMouseDown := ImageMouseDown;
  image.OnMouseMove := ImageMouseMove;
  image.OnMouseUp   := ImageMouseUp;
end;

end.


Эти обработчики можно присваивать любому TImage они универсальные


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
okamor71
Дата 17.10.2006, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



alexeis1, Проститечто надоедаю, но немогу понять в что тут не так
Код

  Image1.Canvas.DrawFocusRect(R1);
  Image2.Canvas.DrawFocusRect(R2);
  BM:=BitMap.Create;
  BM.Width:=R2.Right - R2.Left;
  BM.Height:=R2.Bottom - R2.Top;
  try
    BM.Canvas.Copyrect(R1, BM.Canvas, R2);
  finally
    BM.Free
  end;
  if SavePictureDialog1.Execute then begin
    BitMap.Assign(Image1.Picture);
    BitMap.SaveToFile(SavePictureDialog1.FileName);
  end;

или может Вы подскажите как наложить Image2 на Image1
PM MAIL ICQ   Вверх
Alexeis
Дата 17.10.2006, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(okamor71 @  17.10.2006,  14:02 Найти цитируемый пост)
BM.Canvas.Copyrect(R1, BM.Canvas, R2);

Странный способ копирования... Производится попытка скопировать изображения с самого себя, на себя. На сколько я помню эта функция не умеет такого делать (только с разных холстов), да и бессмыслено, ведь нужно копировать изображение с другого объекта.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
okamor71
Дата 17.10.2006, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вопрос снимается, проблему решил, тему можно в принцыпе закрывать
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

FAQ раздела лежит здесь!


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

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




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


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

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