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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2007, 11:33   #1
trafbite
Форумчанин
 
Регистрация: 21.07.2007
Сообщений: 103
Вопрос Проблема с картинкой

Вот исходный код:

if checkbox1.Checked then begin
Bitmap := TBitmap.Create;
try
Image1.Canvas.Create;
except
end;
Image1.Width :=Random(100);
Image1.Height :=Random(100);

Image1.Canvas.lineto(random(100),ra ndom(100));
Image1.Picture.SaveToFile(path+'\'+ time+'\'+memo1.lines[i]+'.bmp');
Bitmap.LoadFromFile(path+'\'+time+' \'+memo1.lines[i]+'.bmp');
jpg := TJpegImage.Create;
jpg.Assign(image1.picture.graphic);
jpg.CompressionQuality := 50;
jpg.Compress;
jpg.SaveToFile(path+'\'+time+'\'+me mo1.lines[i]+'.jpg');
jpg.free;
end;

Вопрос: прога генерит картинки размером с область "Image1". Почему она не учитывает строки:
Image1.Width :=Random(100);
Image1.Height :=Random(100);
Мне нужно, что бы размер картинок был именно рандомный. Как это реализовать?
Заранее спасибо.
trafbite вне форума Ответить с цитированием
Старый 22.07.2007, 11:39   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

А вот так?

Image1.AutoSize:=false;
Carbon вне форума Ответить с цитированием
Старый 22.07.2007, 12:14   #3
trafbite
Форумчанин
 
Регистрация: 21.07.2007
Сообщений: 103
По умолчанию

Не, это не то...У меня так и стояло в ее настройках. Не работает.
trafbite вне форума Ответить с цитированием
Старый 22.07.2007, 12:28   #4
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Код:
 
Bitmap := TBitmap.Create;
try
Image1.Canvas.Create;
except
end;
Randomize();
k1:=Random(100);{размер области X}
j1:=Random(100);{размер области У}
k2:=Random(100);{точка X}
j2:=Random(100);{точка У}
bitmap.Width:=k1;
bitmap.Height:=j1;
Image1.Width:=bitmap.Width;
Image1.Height:=bitmap.Height;
 
bitmap.Canvas.LineTo(k2,j2); {нарисуем линию на Битмапе}
Bitmap.SaveToFile('h:\111.bmp'); {сохраним Битмап}
{Загрузим БитМап в Image}
Form1.Image1.Picture.Bitmap.LoadFromFile('h:\111.bmp');
 jpg...
Вообщем привязку делайте к Bitmap, а не к Image

Последний раз редактировалось Alex21; 22.07.2007 в 13:05.
Alex21 вне форума Ответить с цитированием
Старый 22.07.2007, 12:58   #5
trafbite
Форумчанин
 
Регистрация: 21.07.2007
Сообщений: 103
По умолчанию

Randomize(); - это что за ерунда? Может ты имел ввиду Random();? Так он у меня и стоит, а все равно размер картинок фиксированный и равен размеру окна Image1, блин, как этим бороться?
trafbite вне форума Ответить с цитированием
Старый 22.07.2007, 13:02   #6
Net
;-)
Пользователь
 
Регистрация: 18.07.2007
Сообщений: 69
По умолчанию

Чтоб это работало, поставь Image1.Stretch:=True ну и Image1.Proportional:=True, если хочешь чтобы соблюдались пропорции.
А потом уже Random... да, Randomize в FormCreate поставь, чтобы каждый раз сбрасывать RandSeed, чтобы "порандомнее" было.

Image1.AutoSize ставим в False.
Net вне форума Ответить с цитированием
Старый 22.07.2007, 13:07   #7
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Смотри пост #4

P.S.: Исправил :-)
Alex21 вне форума Ответить с цитированием
Старый 22.07.2007, 13:27   #8
trafbite
Форумчанин
 
Регистрация: 21.07.2007
Сообщений: 103
По умолчанию

Alex21, спасибо огромное! Но есть все равно вопрос:

Цитата:
procedure TForm1.Button1Click(Sender: TObject);
var
k1,k2,j1,j2,i:integer;
jpg:TJPEGimage;
Bitmap:Tbitmap;
begin
Randomize();
for i:=1 to 5 do begin
Bitmap := TBitmap.Create;
try
Image1.Canvas.Create;
except
end;
k1:=Random(100);{ðàçìåð îáëàñòè X}
j1:=Random(100);{ðàçìåð îáëàñòè Ó}
k2:=Random(100);{òî÷êà X}
j2:=Random(100);{òî÷êà Ó}
bitmap.Width:=k1;
bitmap.Height:=j1;
Image1.Width:=bitmap.Width;
Image1.Height:=bitmap.Height;
bitmap.Canvas.LineTo(k2,j2); {òî÷êà Õ}
Image1.Canvas.LineTo(k2,j2); {òî÷êà Ó}
image1.Canvas.Brush.Bitmap:=bitmap. Canvas.Brush.Bitmap;
Bitmap.SaveToFile(inttostr(i)+'.bmp ');
Bitmap.LoadFromFile(inttostr(i)+'.b mp');
jpg := TJpegImage.Create;
jpg.Assign(image1.Picture.graphic);
jpg.CompressionQuality := 50;
jpg.Compress;
jpg.SaveToFile(inttostr(i)+'.jpg');
jpg.free;
bitmap.Free;
end;
end;
Вот что тут не так? BMP-шки теперь генерятся разных размеров, а JPG-шки все равно только по размеру окна image1...
trafbite вне форума Ответить с цитированием
Старый 22.07.2007, 13:37   #9
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от trafbite Посмотреть сообщение
Вот что тут не так? BMP-шки теперь генерятся разных размеров, а JPG-шки все равно только по размеру окна image1...
Если списываете, списывайте правильно:
Код:
Bitmap.SaveToFile(inttostr(i)+'.bmp');
Form1.Image1.Picture.Bitmap.LoadFromFile(inttostr(i)+'.bmp');
jpg := TJpegImage.Create;
jpg.Assign(image1.Picture.graphic);
Alex21 вне форума Ответить с цитированием
Старый 22.07.2007, 13:40   #10
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Или еще проще:
Код:
jpg.Assign(bitmap);
Alex21 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с картинкой puma HTML и CSS 3 15.07.2008 14:20
И ещё проблема с DLL Altera Общие вопросы Delphi 7 25.06.2008 23:45
Управление картинкой Патрон Общие вопросы Delphi 15 06.05.2008 20:54
проблема с UDP Pitbull Работа с сетью в Delphi 4 06.11.2007 09:35