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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> глюк с ресайзом, image 
:(
    Опции темы
CompWorm
  Дата 9.8.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

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



Вновь приветствую!

помогите плиз решить проблему... вот код

Код


procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
var n: string;
begin

PageControl1.Width:=form1.Width;
PageControl1.Height:=form1.Height;

image1.Top:=0;
image1.Left:=0;
Image1.Width := screen.Width;
Image1.Height:= screen.Height;

image7.Top     :=round(65/(600/TabSheet2.Height));
image7.left      :=round(10/(785/TabSheet2.Width ));
image7.Height :=round(100*(TabSheet2.Height/600));
image7.Width  :=round(320*(TabSheet2.Width/800));



...



FImage:= Tbitmap.create;

n:=ExtractFilePath(Application.ExeName)+'skins/'+MySkin+'\'+'backg1.bmp';
Fimage.LoadFromFile(n);
image1.Canvas.StretchDraw(Rect(0, 0,  PageControl1.Width-12, PageControl1.Height-51), FImage);

n:=ExtractFilePath(Application.ExeName)+'skins/'+MySkin+'\'+'i7.bmp';
Fimage.LoadFromFile(n);
image7.Canvas.StretchDraw(Rect(0, 0,  image7.Width, image7.Height), FImage);

end;




короче, этот код правильным (я надеюсь) образом перераспредиляет картинки, кнопки итд
на форме в зависимости от ее размера. то есть в процентном отношении. (если это можно сделать проще, подскажите мне дураку)

проблема в том, что image1 и картинка на нем растягивается без проблем, в зависимости от размеров пайдж контрола. 
а вот image7 не совсем верно.
нарисованная на нем картинка image7.Canvas.StretchDraw растянута верно, а вот сам 
image7 не растягивается вообще и остается с виду статичным, отрезая часть правельно настянутой картинки на нем smile ! 

установка автосайза вообще приводит к полному исчезновению.
подскажите, в чем я не прав  smile 


--------------------
PM MAIL   Вверх
Alexeis
Дата 10.8.2006, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



При использовании 
Цитата(CompWorm @  9.8.2006,  22:36 Найти цитируемый пост)
image7.Canvas.StretchDraw

или любых других функций рисования, свойство Stretch у TImage автоматически переходит из true в false, и картинка не растягивается по всей поверхности канвы. После любых операций рисования желатедьно заново устанавливать Stretch.


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

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

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


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

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



похоже, Вы правы.
Большое спасибо. smile 


--------------------
PM MAIL   Вверх
CompWorm
Дата 10.8.2006, 05:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

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



как-то я рано обрадовался... этот Stretch уж слишком растягивает.

рассмотрим пример:

Код

procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
var n: string;
begin
PageControl1.Width:=form1.Width;
PageControl1.Height:=form1.Height;

image1.Top:=0;
image1.Left:=0;
Image1.Width := TabSheet2.Width;
Image1.Height:= TabSheet2.Height;

FImage:= Tbitmap.create;

n:=ExtractFilePath(Application.ExeName)+'skins/'+MySkin+'/'+'backg1.bmp';
Fimage.LoadFromFile(n);
image1.Canvas.StretchDraw(Rect(0, 0,  Image1.Width, Image1.Height), FImage);



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

Код

image2.Stretch:=true;


все растягивается в полтора (!) раза. примерно. 
что конечно неверно. 

нужно ли делать еще какие-нибудь настройки? 
неужели Вы никогда не масштабировали изображение?


--------------------
PM MAIL   Вверх
Alexeis
Дата 10.8.2006, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



можно начать с того что рисовать можно не на всей область Imgae, а только на ее клиентской части Image1.ClientWidth вместо, Image1.Width
Цитата(CompWorm @  10.8.2006,  05:45 Найти цитируемый пост)
image1.Canvas.StretchDraw(Rect(0, 0,  Image1.Width, Image1.Height), FImage);

Кроме того на самом деле рисование производится на, BitMap, Image, только отобажает битмап. Поэтому во избежание трудно уловимых ошибок, я бы посоветовал рисовать но Image1.Picture.Bitmap.Canvas, и использовать только его размеры. Кроме того после любого ресайза меняются размеры только Имаги, но не встроеного битмапа, поэтому для коррекной работы требуется установка 
Код

Image1.Picture.Bitmap.Width := Image1.ClientWidth
 (анологично высота).
После установки правельных размеров битмапа, на нем можно рисовать изображение. Поскольку битмап и так имеет размеры имаги, то необходимость в Stretch отпадает. Другой вариант состоит, в том чтобы не менять размер битмапа, но всеже для рисования использовать именно его размеры, а не имаги. Тогда Stretch растянет битмап до размеров Image.

Это сообщение отредактировал(а) alexeis1 - 10.8.2006, 09:04


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

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

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


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

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



во оказывается скока тонкостей!
спасибо. пойду поработаю над этим.


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

Запрещено:

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

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

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

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


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

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


 




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


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

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