Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Мультимедиа в Delphi
Регистрация

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

Ответ
 
Опции темы
Старый 09.04.2008, 09:01   #1
SERG1980
Профессионал
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,813
Репутация: 717
По умолчанию Перерисовка на Image

Суть такова. На форме есть имидж с выравниваем по всей площади. При нажатии на кнопку на имидже отрисовывается 16 битмапов 4*4 (шаг по оси Х и оси Y зависит от ширины и длины имиджа (соответственно и от размеров формы). После увеличиваем размер формы нажимаем на кнопку, а так как шаг между битмапами изменился то все я их увидеть не могу ПОЧЕМУТО. Как сделать чтобы видимая облать канвы соответствовала размеру имиджа
SERG1980 вне форума   Ответить с цитированием
Старый 09.04.2008, 09:06   #2
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,957
Репутация: 6832
По умолчанию

Чет не очень понял вопрос, но из того что понял и представил полагаю что StretchDraw поможет
Stilet вне форума   Ответить с цитированием
Старый 09.04.2008, 09:12   #3
mutabor
Телепат с дипломом
Профессионал
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,931
Репутация: 1570

icq: 401708834
По умолчанию

Очень похоже на баг с перерисовкой, НО это же имидж, к-рый в ручной перерисовке не нуждается.
Скорее всего неправильный расчет координат для отрисовки.

p.s. без кода больше сказать ничего не могу

Цитата:
Как сделать чтобы видимая облать канвы соответствовала размеру имиджа
она ему всегда соответствует

Последний раз редактировалось mutabor; 09.04.2008 в 09:18.
mutabor вне форума   Ответить с цитированием
Старый 09.04.2008, 09:41   #4
SERG1980
Профессионал
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,813
Репутация: 717
По умолчанию

вот эта процедура
procedure DrawVBV(Image:TImage;n:integer;type VBV:String);
var zazorx,zazory,row,col,a,b:integer;
VBV:TBitMap;
R:Trect;
j: Integer;
i: Integer;
begin
image.canvas.fillrect(image.canvas. cliprect);
VBV:=TBitMap.Create;
VBV.LoadFromFile(typeVBV);
form1.Edit3.Text:= inttostr(image.Canvas.ClipRect.Righ t);
if n<8 then col:=n else if (n in[8..16]) then col:=4 else col:=6;
row:=round(n/col);
zazorx:=trunc((Image.Width-(VBV.Width*col))/(col+1));
zazory:=trunc((Image.Height-(VBV.Height *row))/(row+1));
form1.Edit2.Text:=inttostr(zazorx)+ ' '+inttostr(zazory);
for j:=1 to row do
begin
a:=zazorx;
b:=zazory+((j-1)*(VBV.Height+zazory));
for i:=1 to col do
begin
//r:=Bounds(a,b,VBV.Width,VBV.Height) ;
Image.Canvas.Draw (a,b,VBV);
a:=a+zazorx+VBV.Width;
end;
end;
VBV.Free;
end;

шаг между картинками расчитывается правильно (складывал ширину картинок и шаг между ними и результат получался равный ширине имижда)
Глянте проект
Вложения
Тип файла: rar Image DT.rar (248.8 Кб, 18 просмотров)
SERG1980 вне форума   Ответить с цитированием
Старый 09.04.2008, 09:46   #5
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,957
Репутация: 6832
По умолчанию

Серж, опиши задачу. По-моему все решить можно гораздо проще
Stilet вне форума   Ответить с цитированием
Старый 09.04.2008, 09:54   #6
mutabor
Телепат с дипломом
Профессионал
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,931
Репутация: 1570

icq: 401708834
По умолчанию

Сейчас проект скачаю посмотрю
mutabor вне форума   Ответить с цитированием
Старый 09.04.2008, 10:05   #7
SERG1980
Профессионал
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,813
Репутация: 717
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Серж, опиши задачу. По-моему все решить можно гораздо проще
Пусть будет отрисовка битмапов при разных размерах формы и соответственно имиджа
SERG1980 вне форума   Ответить с цитированием
Старый 09.04.2008, 10:07   #8
_Dmitry
Профессионал
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
Репутация: 776
По умолчанию

Изменяй вручную размер Bitmap в Image, при изменении размера формы
Код:

procedure TForm1.FormResize(Sender: TObject);
begin
  Image1.Picture.Bitmap.Width:=Image1.Width;
  Image1.Picture.Bitmap.Height:=Image1.Height;
end;

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

Последний раз редактировалось _Dmitry; 09.04.2008 в 10:20.
_Dmitry вне форума   Ответить с цитированием
Старый 09.04.2008, 10:20   #9
mutabor
Телепат с дипломом
Профессионал
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,931
Репутация: 1570

icq: 401708834
По умолчанию

Раз уж ты пытался перерисовывать имидж, что делать необязательно, то можешь смело использовать PaintBox, баг исчезнет.
Или как Дмитрий сказал. Почему то второй раз в имидже битмап сам уже не тянется, хотя процедура вызывается та же.
mutabor вне форума   Ответить с цитированием
Старый 09.04.2008, 10:24   #10
SERG1980
Профессионал
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,813
Репутация: 717
По умолчанию

Спасибо Dmitry проблема решена
SERG1980 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
NPG Image Altera Компоненты Delphi 2 21.08.2008 12:30
Перерисовка формы satana Общие вопросы Delphi 4 18.09.2007 19:42
PNG в Image Grey Fox Помощь студентам 1 02.08.2007 12:24
image Elm0 Свободное общение 4 21.06.2007 17:34


21:17.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru