Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.02.06;
Скачать: [xml.tar.bz2];

Вниз

Пара вопросов по Дэльфи 7   Найти похожие ветки 

 
Анонимус   (2010-11-14 18:18) [0]

Добрый день.  У меня есть два вопроса, которые для знатоков должны быть совсем не сложными.

1. Каким образом можно обновить Image? Если подробнее, то я попиксельно переношу из Image1 в Image2 картинку, например, с разрешением 100х100. Потом в Image1 загружаю картинку с разрешением 10х10 и также попиксельно переношу её в Image2. При этом, в Image2, помимо перенёсонной 10х10 картинки, там по прежнему виднеются остатки и той картинки, которая 100х100 и получается так, что маленькая картинка как будто бы накладывается на большую. Так вот, как этого избежать?
Пробовал искать в гугле, порылся по онлайн-учебникам — не нашёл. Пробовал наугад всякие Refresh, Repaint — тоже не помогает.

2. Как во время выполнения процедуры прервать выполнение этой самой процедуры? Т.е. у меня после нажатия некой кнопки идёт процедура, но в самом её начале проверяются некие условия. Так вот, как при невыполнении этих условий прервать дальнейшее выполнение процедуры?


 
v_a_belousov   (2010-11-14 18:56) [1]


> как этого избежать?

Перед переносом в Image2 надо его очистить Image2.Picture := nil если не ошибаюсь


 
v_a_belousov   (2010-11-14 18:59) [2]


> Т.е. у меня после нажатия некой кнопки идёт процедура, но
> в самом её начале проверяются некие условия. Так вот, как
> при невыполнении этих условий прервать дальнейшее выполнение
> процедуры?
>

//если условие не выполнено, то выходим
if условие<>true then exit
else
//если условие выполнено
то делай необходимые тебе операции


 
Andy BitOff ©   (2010-11-14 19:07) [3]

> v_a_belousov   (14.11.10 18:59) [2]
> if условие<>true then exit

if not условие then exit


 
Анонимус   (2010-11-14 19:13) [4]

v_a_belousov
Спасибо, помогло!


 
Anatoly Podgoretsky ©   (2010-11-14 19:22) [5]

И выбрал самый плохой вариант, ламерский.


 
v_a_belousov   (2010-11-14 19:29) [6]


> if not условие then exit

Ну да или так)

> И выбрал самый плохой вариант, ламерский.

В смысле?


 
Анонимус   (2010-11-14 19:50) [7]


> И выбрал самый плохой вариант, ламерский.

Вот вместо того, чтобы делать вид, что ты умнее всех, лучше бы написал как сделать лучше.


 
clickmaker ©   (2010-11-14 20:04) [8]

> то я попиксельно переношу из Image1 в Image2 картинку

а зачем попиксельно?
есть же Canvas.Draw


 
И. Павел ©   (2010-11-14 20:07) [9]


> попиксельно переношу из Image1 в Image2 картинк

Прям в двойном цикле по Canvas.Pixels? Если никаких сложный преобразований не ведется, то проще и быстрее копировать все сразу.

Правильно и [2] и [3], но [2] считается плохим стилем.


 
v_a_belousov   (2010-11-14 20:13) [10]


> Правильно и [2] и [3], но [2] считается плохим стилем.

исправлюсь


 
Анонимус   (2010-11-14 20:26) [11]


> есть же Canvas.Draw

Это скопирует всю картинку сразу?


> Прям в двойном цикле по Canvas.Pixels?

Да, именно в нём=)


> Если никаких сложный преобразований не ведется, то проще
> и быстрее копировать все сразу.

Как раз таки мне нужны значения яркости цветов каждого пикселя, т.к. с ними производятся некоторые манипуляции. Поэтому приходиться попиксельно.


> Правильно и [2] и [3], но [2] считается плохим стилем.

Да я вообще-то не об этом спрашивал, я спрашивал о том, по какой команде прекращает своё выполнение процедура. Этой командой оказалось слово exit=)
А сама проверка условия у меня выглядит так:
if условие1 and условие2 and условие3 then ...


 
Анонимус   (2010-11-14 20:47) [12]


> а зачем попиксельно?есть же Canvas.Draw

Что-то не получается через Canvas.Draw. Как правильно задавать надо?


 
{RASkov} ©   (2010-11-14 21:06) [13]

> [12] Анонимус   (14.11.10 20:47)

procedure TForm1.Image1Click(Sender: TObject);
begin
 with TOpenPictureDialog.Create(self) do try
  if Execute then begin
   Image1.Picture.LoadFromFile(FileName);
   Image2.Picture.Assign(Image1.Picture);
  end;
 finally
  Free;
 end;
end;


> Потом в Image1 загружаю картинку с разрешением 10х10 и также
> попиксельно переношу её в Image2.

ну или сразу грузить в оба Image"са одну и туже картинку....


 
Анонимус   (2010-11-14 22:45) [14]


> Image2.Picture.Assign(Image1.Picture);

Ага, переносит. Спасибо.


> ну или сразу грузить в оба Image"са одну и туже картинку.
> ...

В принципе, можно. Но мне вариант v_a_belousov"а больше нравится.



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

Форум: "Начинающим";
Текущий архив: 2011.02.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.004 c
2-1290146683
Phoenix
2010-11-19 09:04
2011.02.06
TOraTable и Blob


2-1290065729
DoKZ
2010-11-18 10:35
2011.02.06
Indy TCP Client Server (Delphi 7)


3-1251976429
kyn66
2009-09-03 15:13
2011.02.06
После обновления компонентов ADS - ошибка


15-1287433743
Юрий
2010-10-19 00:29
2011.02.06
С днем рождения ! 19 октября 2010 вторник


2-1289696791
kiro
2010-11-14 04:06
2011.02.06
Запуск программы в консоле





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский