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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программа совмещения 2-х картинок 
:(
    Опции темы
Катенька
Дата 17.5.2011, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



На форме расположены 3 Picture и прогрессбар результат совмещения показывающий, в две из них загружаются любые картинки, в третьем результат их совмещения.Вот код


Код

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtDlgs, StdCtrls, ComCtrls, ExtCtrls, jpeg, Menus, TeeProcs,
TeEngine, Chart, DbChart;

type
TForm1 = class(TForm)
OpenPictureDialog1: TOpenPictureDialog;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TrackBar1: TTrackBar;
ProgressBar1: TProgressBar;
Button1: TButton;
Image5: TImage;
GroupBox1: TGroupBox;
Image1: TImage;
GroupBox2: TGroupBox;
Image2: TImage;
procedure Image1Click(Sender: TObject);
procedure Image2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Image3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ugol,W:real;
implementation

{$R *.dfm}

procedure TForm1.Image1Click(Sender: TObject);
begin
OpenPictureDialog1.InitialDir:= GetCurrentDir;
if not OpenPictureDialog1.Execute
then ShowMessage('Не нашел я этот файл окоянный!!!')
else
Image1.Picture.LoadFromFile(OpenPictureDialog1.Fil eName);
end;
procedure TForm1.Image2Click(Sender: TObject);
begin
OpenPictureDialog1.InitialDir:= GetCurrentDir;
if not OpenPictureDialog1.Execute
then ShowMessage('Не нашел я этот файл окоянный!!!')
else
Image2.Picture.LoadFromFile(OpenPictureDialog1.Fil eName);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
bt:TBitmap;
i,j:Integer;
C1,C2:TColor;
r1,r2,g1,g2,b1,b2:Byte;
begin
W:=TrackBar1.Position/10;
Image5.Picture.Bitmap:=TBitmap.Create;
Image5.Picture.Bitmap.Height:=Image1.Picture.Bitma p.Height;
Image5.Picture.Bitmap.Width:= Image1.Picture.Bitmap.Width;Bt:=Image5.Picture.Bit map;
progressBar1.Max:=Bt.Height-1 ;
For j:=0 to Bt.Height-1 do begin For i:=0 to Bt.Width-1 do begin
C1:=Image1.Picture.Bitmap.Canvas.Pixels[i,j];C2:=Image2.Picture.Bitmap.Canvas.Pixels[i,j];
R1:=GetRValue(C1); G1:=GetGValue(C1); B1:=GetBValue (C1);R2:=GetRValue(C2); G2:=GetGValue(C2); B2:=GetBValue (C2);
Bt.Canvas.Pixels[i,j]:=RGB(Trunc((W*R1)+(1-W)*R2),Trunc((W*G1)+(1-W)*G2),Trunc((W*B1)+(1-W)*B2) ) ;
end;
progressBar1.Position:=j;
end;
end;
procedure TForm1.Image3Click(Sender: TObject);
begin
OpenPictureDialog1.InitialDir:= GetCurrentDir;
if not OpenPictureDialog1.Execute
then ShowMessage('Не нашел я этот файл окоянный!!!')
else
end;
end.


прокоментируйте пожалуйста что есть что и там есть лишнее-лишнее убрать.


Это сообщение отредактировал(а) bems - 18.5.2011, 07:24
PM MAIL   Вверх
Snowy
Дата 18.5.2011, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Неужели это работает?
Замечания:
1. Ужасное оформление кода. Совершенно нечитаем.
2. Работа через Pixels ужасно медленная.
3. Размер изображений. Код предполагает, что у обоих изображений размер одинаковый, что далеко не факт. Если второе изображение окажется меньше первого, будет сбой.
4. Не предусмотрен вариант отмены выбора изображения в диалоге.
5. Три совершенно одинаковых обработчика событий. Зачем? Достаточно одного, назначенного всем.
Ну и сам способ наложения древний и медленный, как мамонт.
Делается всё быстрее и проще: http://forum.vingrad.ru/index.php?showtopi...st&p=701698
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

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


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

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


 




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


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

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