Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.02.26;
Скачать: CL | DM;

Вниз

Загрузка в динамический Image часть изображения из файла   Найти похожие ветки 

 
igorium ©   (2011-11-14 12:04) [0]

Всем привет.
Есть картинка JPEG-файл.

Требуется динамически создать Image и загрузить часть картинки из JPEG-файла.

Я вроде все правильно делаю, но ничего не получается :(
Привожу текст программы:

// создаю Image
imFoto := TImage.Create(Self);
imFoto.Parent := MyPerson[num].pnPanel;
imFoto.OnClick := Panel_FirstClick;
imFoto.OnMouseMove := im_PanelFirstMouseMove;
imFoto.Left := Im_First.Left;
imFoto.Top := Im_First.Top;
imFoto.Width := Im_First.Width;
imFoto.Height := Im_First.Height;
imFoto.Tag := num;
imFoto.Proportional := true;
imFoto.Stretch := true;

// загрузка JPEG-файла и его конвертация
  loadJPG := TJpegImage.Create;
  loadJPG.JPEGNeeded;
  loadJPG.LoadFromFile(copy(FileName, 1, length(FileName)-3) + "jpg");
  loadBMP := TBitmap.Create;
  loadBMP.Width := JPG_W*Count_persons;
  loadBMP.Height := JPG_H;
  loadBMP.Assign(loadJPG);
  loadJPG.Free;

  imFoto.Canvas.CopyRect(Rect(JPG_W*(i-1), 0, JPG_W*i, JPG_H),
                                    loadBMP.Canvas,
                                    Rect(0, 0, JPG_W, JPG_H));
  loadBMP.Free;


Собственно не понимаю в чем засада :(
Заранее благодарен за помощь.


 
KilkennyCat ©   (2011-11-14 12:12) [1]

может, файла нет? ты так уверенно грузишь его... хоть бы проверил наличие.
да и imFoto.Canvas выглядит странно. Тама внутри вроде что-то другое, TPicture вроде.


 
igorium ©   (2011-11-14 12:20) [2]

Файл точно есть.
Проверял - loadJPG - сохраняет файл отлично.


 
KilkennyCat ©   (2011-11-14 12:24) [3]


> Проверял - loadJPG - сохраняет файл отлично.

кто ж так проверяет?!
if FileExists(..


 
Dennis I. Komarov ©   (2011-11-14 12:31) [4]

TPicture.LoadFromFile?


 
igorium ©   (2011-11-16 08:18) [5]


> KilkennyCat ©   (14.11.11 12:24) [3]
>
> > Проверял - loadJPG - сохраняет файл отлично.
>
> кто ж так проверяет?!
> if FileExists(..


Мы не поняли друг друга.
Я для теста сохранял в файл loadBMP и loadJPG.
Все замечательно сохранялось.
А в imFoto не передается :(
Т.е. загвоздка в imFoto.Canvas.CopyRect...


 
KilkennyCat ©   (2011-11-16 09:18) [6]


>
> Мы не поняли друг друга.

неправда. я тебя понял, а ты меня - нет.

> loadJPG.JPEGNeeded;
>   loadJPG.LoadFromFile(copy(FileName, 1, length(FileName)-
> 3) + "jpg");
>   loadBMP := TBitmap.Create;

рано или поздно это закончится плохо. проверка файла отсутствует. пофиг, что там вообще имадж, джпег канвасы и т.д.

> А в imFoto не передается :(


[1], [4]


 
igorium ©   (2011-11-16 12:29) [7]

ОК.
Насчет проверки на наличие согласен.
Сделаю.

Но проблема-то остается :(
Нет такого свойства imFoto.Picture.CopyRect :(


 
KilkennyCat ©   (2011-11-16 12:51) [8]

imFoto.Picture.Bitmap.Canvas.CopyRect();


 
igorium ©   (2011-11-16 13:13) [9]


> KilkennyCat ©   (16.11.11 12:51) [8]
> imFoto.Picture.Bitmap.Canvas.CopyRect();


НЕ работает :(


 
Германн ©   (2011-11-16 13:27) [10]


> Нет такого свойства imFoto.Picture.CopyRect

Куда же оно делось?


 
igorium ©   (2011-11-16 13:51) [11]


> Германн ©   (16.11.11 13:27) [10]
> > Нет такого свойства imFoto.Picture.CopyRect
>
> Куда же оно делось?


А оно было?
Так и будем в угадайку играть?
Я открыл новый проект, кинул туда Image и написал
image1.Picture.CopyRect
Мой 7-ой Дельфи сказал, что таких свойств не знает.

Ну реально помощь нужна !!!


 
KilkennyCat ©   (2011-11-16 13:56) [12]

ну вообще-то странно.
во-первых, твой первый вариант тоже работает imFoto.Canvas.CopyRect(
что-то ты не так делаешь.

вот я накидал и проверил:
unit Unit7;

interface

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

type
 TForm7 = class(TForm)
   btn1: TButton;
   procedure btn1Click(Sender: TObject);
 private
   { Private declarations }
 public
   imfoto:TImage;
   { Public declarations }
 end;

var
 Form7: TForm7;

implementation

{$R *.dfm}

procedure TForm7.btn1Click(Sender: TObject);
var
 loadJPG : TJpegImage;
 loadBMP : TBitmap;
begin
 imFoto := TImage.Create(Self);
 imFoto.Parent := Form7;
 imFoto.Left := 0;
 imFoto.Top := 0;
 imFoto.Width := 64;
 imFoto.Height := 64;

 loadJPG := TJpegImage.Create;
 loadBMP := TBitmap.Create;

 loadJPG.JPEGNeeded;
 loadJPG.LoadFromFile("D:\KPK\1.jpg");
 loadBMP.Assign(loadJPG);
 loadJPG.Free;

 imFoto.Canvas.CopyRect(Rect(10, 10, 50, 50), loadBMP.Canvas, Rect(100, 100, 300, 300));

 loadBMP.Free;
end;

end.


 
MBo ©   (2011-11-16 15:46) [13]

>image1.Picture.CopyRect
>Мой 7-ой Дельфи сказал, что таких свойств не знает.

Будьте внимательнее. У Picture метода CopyRect, конечно, нет - это метод TCanvas


 
igorium ©   (2011-11-21 11:46) [14]


> KilkennyCat ©

Спасибо большое за помощь.
Разобрался.



Страницы: 1 вся ветка

Текущий архив: 2012.02.26;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.009 c
15-1320861739
Вспученный
2011-11-09 22:02
2012.02.26
Как посмотреть видео в контакте с ошибкой доступа?


15-1320006602
Юрий
2011-10-30 23:30
2012.02.26
С днем рождения ! 31 октября 2011 понедельник


15-1320674537
mvconf
2011-11-07 17:02
2012.02.26
Разработка системы видеоконференцсвязи


2-1321257874
igorium
2011-11-14 12:04
2012.02.26
Загрузка в динамический Image часть изображения из файла


11-1242230322
boguslaw
2009-05-13 19:58
2012.02.26
koledb