Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  1 762

•  TDictionary Custom Sort  4 316

•  Fast Watermark Sources  4 005

•  3D Designer  6 178

•  Sik Screen Capture  4 257

•  Patch Maker  4 801

•  Айболит (remote control)  4 727

•  ListBox Drag & Drop  3 832

•  Доска для игры Реверси  91 042

•  Графические эффекты  5 038

•  Рисование по маске  4 081

•  Перетаскивание изображений  3 400

•  Canvas Drawing  3 728

•  Рисование Луны  3 504

•  Поворот изображения  3 043

•  Рисование стержней  2 664

•  Paint on Shape  2 038

•  Генератор кроссвордов  2 826

•  Головоломка Paletto  2 230

•  Теорема Монжа об окружностях  2 945

•  Пазл Numbrix  1 984

•  Заборы и коммивояжеры  2 582

•  Игра HIP  1 599

•  Игра Go (Го)  1 526

•  Симулятор лифта  1 814

•  Программа укладки плитки  1 553

•  Генератор лабиринта  1 931

•  Проверка числового ввода  1 688

•  HEX View  1 869

•  Физический маятник  1 695

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Приложение для просмотра изображений JPEG и BMP



unit mainUnit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtDlgs, StdCtrls, ComCtrls, ExtCtrls, Buttons, ToolWin, ImgList;

type
  TForm1 = class(TForm)
    SavePictureDialog1: TSavePictureDialog;
    OpenPictureDialog1: TOpenPictureDialog;
    ScrollBox1: TScrollBox;
    Image1: TImage;
    ToolBar1: TToolBar;
    OpenBtn: TToolButton;
    SaveBtn: TToolButton;
    Panel2: TPanel;
    ProgressBar1: TProgressBar;
    ImageList1: TImageList;
    procedure SavePictureDialog1TypeChange(Sender: TObject);
    procedure Image1Progress(Sender: TObject; Stage: TProgressStage;
      PercentDone: Byte; RedrawNow: Boolean; const R: TRect;
      const Msg: string);
    procedure SavePictureDialog1Close(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure OpenBitBtnClick(Sender: TObject);
    procedure SaveBitBtnClick(Sender: TObject);
    procedure ToolBar1Resize(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}
uses jpeg;
const DeltaH: Integer = 80;
var Quality: TJpegQualityRange;
  ProgressiveEnc: Boolean;

procedure TForm1.FormCreate(Sender: TObject);
var s: string;
begin
  s := GraphicFilter(TBitmap) + '|' + GraphicFilter(TJpegImage);
  OpenPictureDialog1.Filter := s;
  SavePictureDialog1.Filter := s;
end;

procedure TForm1.OpenBitBtnClick(Sender: TObject);
begin
  if OpenPictureDialog1.Execute
    then
  begin
    Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
    SaveBtn.Enabled := True;
  end;
end;

procedure TForm1.SaveBitBtnClick(Sender: TObject);
var ji: TJpegImage;
begin
  with SavePictureDialog1 do
  begin
    FilterIndex := 1;
    FileName := '';
    if not Execute then Exit;

    if Pos('.', FileName) = 0 then
      if (FilterIndex = 1) then
        FileName := FileName + '.bmp'
      else
        FileName := FileName + '.jpg';

    if (FilterIndex = 1) then
      Image1.Picture.Bitmap.SaveToFile(FileName)
    else
    begin
      ji := TJpegImage.Create;
      ji.CompressionQuality := Quality;
      ji.ProgressiveEncoding := ProgressiveEnc;
      ji.OnProgress := Image1Progress;
      ji.Assign(Image1.Picture.Bitmap);
      ji.SaveToFile(FileName);
      ji.Free;
    end;
  end;

end;

procedure TForm1.SavePictureDialog1TypeChange(Sender: TObject);
var ParentHandle: THandle; wRect: TRect;
  PicPanel, PaintPanel: TPanel; QEdit: TEdit;
begin
  with Sender as TSavePictureDialog do
  begin
//родительская панель
    PicPanel := (FindComponent('PicturePanel') as TPanel);
    if not Assigned(PicPanel) then Exit;
    ParentHandle := GetParent(Handle);

//панель-сосед сверху
    PaintPanel := (FindComponent('PaintPanel') as TPanel);
    PaintPanel.Align := alNone;
    if FilterIndex > 1 then
    begin
      GetWindowRect(ParentHandle, WRect);
      SetWindowPos(ParentHandle, 0, 0, 0, WRect.Right - WRect.Left,
        WRect.Bottom - WRect.Top + DeltaH, SWP_NOMOVE + SWP_NOZORDER);
      GetWindowRect(Handle, WRect);
      SetWindowPos(handle, 0, 0, 0, WRect.Right - WRect.Left,
        WRect.Bottom - WRect.Top + DeltaH, SWP_NOMOVE + SWP_NOZORDER);
      PicPanel.Height := PicPanel.Height + DeltaH;

      if FindComponent('JLabel') = nil then
        with TLabel.Create(Sender as TSavePictureDialog) do
        begin
          Parent := PicPanel;
          Name := 'JLabel';
          Caption := 'Quality';
          Left := 5; //Width := PicPanel.Width - 10;
          Height := 25;
          Top := PaintPanel.Top + PaintPanel.Height + 5;
        end;

      if FindComponent('JEdit') = nil then
      begin
        QEdit := TEdit.Create(Sender as TSavePictureDialog);
        with QEdit do
        begin
          Parent := PicPanel;
          Name := 'JEdit';
          Text := '75';
          Left := 50; Width := 50;
          Height := 25;
          Top := PaintPanel.Top + PaintPanel.Height + 5;
        end;
      end;

      if FindComponent('JUpDown') = nil then
        with TUpDown.Create(Sender as TSavePictureDialog) do
        begin
          Parent := PicPanel;
          Name := 'JUpDown';
          Associate := QEdit;
          Increment := 5;
          Min := 1; Max := 100;
          Position := 75;
        end;

      if FindComponent('JCheck') = nil then
        with TCheckBox.Create(Sender as TSavePictureDialog) do
        begin
          Name := 'JCheck';
          Caption := 'Progressive Encoding';
          Parent := PicPanel;
          Left := 5; Width := PicPanel.Width - 10;
          Height := 25;
          Top := PaintPanel.Top + PaintPanel.Height + 35;
        end;
    end
    else
      SavePictureDialog1Close(Sender);
  end;
end;

procedure TForm1.Image1Progress(Sender: TObject; Stage: TProgressStage;
  PercentDone: Byte; RedrawNow: Boolean; const R: TRect;
  const Msg: string);
begin
  case Stage of
    psStarting: begin
        Progressbar1.Position := 0;
        Progressbar1.Max := 100;
      end;
    psEnding: begin
        Progressbar1.Position := 0;
      end;
    psRunning: begin
        Progressbar1.Position := PercentDone;
      end;
  end;
end;

procedure TForm1.SavePictureDialog1Close(Sender: TObject);
var PicPanel: TPanel; ParentHandle: THandle; WRect: TRect;
begin

  with Sender as TSavePictureDialog do
  begin
    PicPanel := (FindComponent('PicturePanel') as TPanel);
    if not Assigned(PicPanel) then Exit;
    ParentHandle := GetParent(Handle);
    if ParentHandle = 0 then Exit;
    if FindComponent('JLabel') <> nil then
    try
      FindComponent('JLabel').Free;
      FindComponent('JEdit').Free;
      ProgressiveEnc := (FindComponent('JCheck') as TCheckBox).Checked;
      FindComponent('JCheck').Free;
      Quality := (FindComponent('JUpDown') as TUpDown).Position;
      FindComponent('JUpDown').Free;

      PicPanel.Height := PicPanel.Height - DeltaH;
      GetWindowRect(Handle, WRect);
      SetWindowPos(Handle, 0, 0, 0, WRect.Right - WRect.Left,
        WRect.Bottom - WRect.Top - DeltaH, SWP_NOMOVE + SWP_NOZORDER);
      GetWindowRect(ParentHandle, WRect);
      SetWindowPos(ParentHandle, 0, 0, 0, WRect.Right - WRect.Left,
        WRect.Bottom - WRect.Top - DeltaH, SWP_NOMOVE + SWP_NOZORDER);
      FilterIndex := 1;
    except
      ShowMessage('Dialog resizing error');
    end;
  end;
end;

procedure TForm1.ToolBar1Resize(Sender: TObject);
begin
  Panel2.Width := ToolBar1.Width - Panel2.Left;
end;

end.

Скачать весь проект





Похожие по теме исходники

Консольное DOS приложение

Нейросеть для распознавания образов

Механизм станка качалки для нефти

Весы для взвешивания

 

Кувшины для воды

Доска для игры Реверси

Сравнение двух изображений

IMod (обработка изображений)

 

Перетаскивание изображений

Load JPEG from RES

Convert JPEG to PDF

Jpeg Errors

 

BmpHViewer

YV-12 or YVU-9 to BMP

BMP Song Creator




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте