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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2009, 00:51   #1
ScorpioN_T
Пользователь
 
Регистрация: 27.10.2008
Сообщений: 62
По умолчанию Обновить Timage

Ситуация такая...
Графичестикй редактор.
Нашел я на форумах два проекта, решил их совместить...

итак...
На форме 1 есть кнопка "Открыть в редакторе" - она проверяет файл является ли "BMP" или нет. Если ДА то грузит форму с РЕДАКТОРОМ.
Картинка как положено открывается и редактируется по необходимости.

Проблема.
Когда хочешь сделать "Новый лист" то выходит что на форме картинка исчезает и больше не появляется, если не загрузить другую картинку.

Или проще как мне В TImage обнулить данные, чтоб далее можно было работать с канвой.

Как я понимаю где то проблема с канвой или BitMap
Исходник ниже...

З.Ы. Я мог не совсем правильно постваить вопрос, просто немного подустал...
Вложения
Тип файла: rar Копия ImagView.rar (322.3 Кб, 15 просмотров)
ScorpioN_T вне форума Ответить с цитированием
Старый 15.05.2009, 01:08   #2
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

А вы там пишете:
Код:
picture := nil; //Уничтожаете изображение
Чтобы очистить канву надо писать примерно так:
Код:
picture.canvas.fillrect(picture.canvas.cliprect); //Заполняем Image
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 15.05.2009, 01:22   #3
ScorpioN_T
Пользователь
 
Регистрация: 27.10.2008
Сообщений: 62
По умолчанию

вопрос еще один появился...

теперь после изменения, другая проблема
Не изменяется картинка, даже высота и длина TImage

ЧТО делать...
Код:
with graphform.image1 do begin
canvas.fillrect(canvas.cliprect); //Заполняем Image
height:=spinedit1.Value;
Width:=spinedit2.Value;
canvas.pen.color:=clwhite;
canvas.rectangle(0,0,width,height);
Лист не меняет размеров,
до этого он хотя бы ЛИСТ чистил и длину и высоту подгонял под мои значения, теперь НЕ ХОЧЕТ
ScorpioN_T вне форума Ответить с цитированием
Старый 15.05.2009, 01:30   #4
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Может перестановка поможет
Код:
with graphform.image1 do begin
height:=spinedit1.Value;
Width:=spinedit2.Value;
canvas.fillrect(canvas.cliprect); //Заполняем Image
canvas.pen.color:=clwhite;
canvas.rectangle(0,0,width,height);
end;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 15.05.2009, 01:39   #5
ScorpioN_T
Пользователь
 
Регистрация: 27.10.2008
Сообщений: 62
По умолчанию

неа
не прет даже этот код
Код:
with graphform.image1 do begin
height:=1;
Width:=1;
canvas.fillrect(canvas.cliprect); //Заполняем Image
height:=spinedit1.Value;
Width:=spinedit2.Value;
canvas.pen.color:=clwhite;
canvas.rectangle(0,0,width,height);
end;
размеры от картинки НЕ меняется
После нажатия на кнопку чистит лист, но размеры остаются.
ScorpioN_T вне форума Ответить с цитированием
Старый 15.05.2009, 01:44   #6
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Попробуйте вот так:
Код:
with graphform.image1 do begin
height:=spinedit1.Value;
Width:=spinedit2.Value;
InValidateRect(Canvas.handle,NIL,True);
canvas.pen.color:=clwhite;
canvas.rectangle(0,0,width,height);
end;
Или так:
Код:
with graphform.image1 do begin
height:=spinedit1.Value;
Width:=spinedit2.Value;
PatBlt(Canvas.Handle, 0, 0, Width, Height, WHITENESS); 
canvas.pen.color:=clwhite;
canvas.rectangle(0,0,width,height);
end;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 15.05.2009, 01:56   #7
ScorpioN_T
Пользователь
 
Регистрация: 27.10.2008
Сообщений: 62
По умолчанию

Второй способ работает лчуше, но размеры не изменются...

а нельзя как нить по другому...
ну например убить картинку и заново создать канву и т.д. ?
ScorpioN_T вне форума Ответить с цитированием
Старый 15.05.2009, 02:15   #8
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Вот!
Код:
with graphform.image1 do begin
picture:= nil;
picture.Create;
AutoSize:=false;
height:=spinedit1.Value;
Width:=spinedit2.Value;
canvas.pen.color:=clwhite;
canvas.rectangle(0,0,width,height);
end;
close;
end;

Последний раз редактировалось uberchel; 15.05.2009 в 09:22.
uberchel вне форума Ответить с цитированием
Старый 15.05.2009, 02:26   #9
ScorpioN_T
Пользователь
 
Регистрация: 27.10.2008
Сообщений: 62
По умолчанию

Заработало

Весы по любому бы нажал бы, всё таки как никак откликнулись !!!!
ScorpioN_T вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите обновить TImage DemonXT Общие вопросы Delphi 6 24.04.2009 22:48
Как обновить?? Vremya-Dengy Общие вопросы Delphi 6 17.02.2009 22:44
как обновить листбокс? counter Win Api 2 16.02.2009 11:42
Обновить комп. Манжосов Денис :) Компьютерное железо 3 10.10.2008 14:50
Обновить Memo VDLab Win Api 7 02.06.2007 01:43