Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с TImage::Height, Не могу изменить размер картинки 
:(
    Опции темы
petlyura
Дата 11.2.2008, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 30.1.2008
Где: Харьков

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



Всем привет!

Помогите, пожалуйста. Пишу прогу, в ней динамически добавляются объекты на форму. У объектов редактирую св-ва в редакторе свойств. У всех элементов изменение св-в (размеров, цвета и т.д.) идет на ура, а у картинки ".bmp" не выходит. 
Написал примитувную программу по изменению св-в картинки ".bmp". Все работает.
А у меня в проблемной совсем так примитивно нельзя, там используются классы-построители и т.д. Короче, я вырезал небольшой фрагмент проги, в ней все довольно ясно, она отражает суть проблемы. посмотрите, пожалуйста, подскажите, почему не работает
Image1->Height, Image1->Width? Хотя я перед этим поставил Stretch = true. Интересно, что Top и Left работают.

Заранее благодарен.

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  Image.rar 18,47 Kb
PM MAIL   Вверх
Lazin
Дата 11.2.2008, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 18
Всего: 154



Когда ты делаешь 
Код

Image1->Height, Image1->Width

Изменяется размер компонента Image, а размер изображения которое хранит этот компонент не меняется
Чтобы он изменился нужно сделать так:
Код

Image1->Picture->Bitmap->Height; 
Image1->Picture->Bitmap->Width;

PM MAIL Skype GTalk   Вверх
petlyura
Дата 11.2.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 30.1.2008
Где: Харьков

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



Спасибо теперь изменяются в отладке Image1->Picture->Bitmap->Height и Image1->Height, но при этом сама картинка на экране остается того же размера, только область вокруг картинки изменяется.
Что делать? Может пытаться как-то через Image1->Canvas->...?
PM MAIL   Вверх
PPS05
Дата 11.2.2008, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 262
Регистрация: 6.11.2005
Где: Беларусь, Минск

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



Lazin, он прав: если выставить Stretch = true и менять Width и Height, то размер должен меняться. ...Но понять, в чем дело я не могу...  smile 


--------------------
Ушел с форума и не вернулся.
PM MAIL ICQ   Вверх
PPS05
Дата 11.2.2008, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 262
Регистрация: 6.11.2005
Где: Беларусь, Минск

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



Нашел такой код:

Код

TIMG::TIMG( TForm* owner, TPoint point)
 :   TImage(owner)
{
 Parent = owner; 

 Top = point.y;
 Left = point.x;
 AutoSize = true;
 Stretch = true;
 NameDefault = "ZD3W16Z.bmp";
}


Свойство Autosize должно быть false, чтобы можно было изменять размеры.

Модераторы, простите за два поста...

Это сообщение отредактировал(а) PPS05 - 11.2.2008, 19:56


--------------------
Ушел с форума и не вернулся.
PM MAIL ICQ   Вверх
artsb
Дата 11.2.2008, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



petlyura, а у тебя AutoSize=false???


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
PPS05
Дата 11.2.2008, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 262
Регистрация: 6.11.2005
Где: Беларусь, Минск

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



Цитата(artsb @  11.2.2008,  19:15 Найти цитируемый пост)
petlyura, а у тебя AutoSize=false???


Тот код, что я привел - и есть код petlyura. 


--------------------
Ушел с форума и не вернулся.
PM MAIL ICQ   Вверх
artsb
Дата 11.2.2008, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Так если AutoSize=true, то размеры и не будут изменяться. В это и ошибка, скорее всего.
Поставь AutoSize=false.

Добавлено @ 20:34
Тобишь, так:
Код

TIMG::TIMG( TForm* owner, TPoint point)
 :   TImage(owner)
{
 Parent = owner;
 // íà÷àëüíûå êîîðäèíàòû
 Top = point.y;
 Left = point.x;
 AutoSize = false;
 Stretch = true;
 NameDefault = "ZD3W16Z.bmp";
}



Это сообщение отредактировал(а) artsb - 11.2.2008, 20:41


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
artsb
Дата 11.2.2008, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



И ещё здесь так:
Код

void __fastcall TFImg::ExitCoords(TObject *Sender)
{
  try
  {
     TIMG* obj = ((TFEditDBD*)Owner)->Editing;
     obj->Proportional = false;                               // тут false
     obj->Top = StrToInt(EYn->Text);
     obj->Left = StrToInt(EXn->Text);
     obj->Height = StrToInt(EHeight->Text); //Òóò ïðîáëåìà! Íå çàïèñûâàåòñÿ â obj->Height çíà÷åíèå!!!
     obj->Width = StrToInt(EWidth->Text);
     obj->Repaint();
  }
  catch( EConvertError&  )
  {
   Application->MessageBox("Íå öèôðà!", "Îøèáêà" , MB_ICONERROR);
   TIMG* obj = ((TFEditDBD*)Owner)->Editing;
   EYn->Text = IntToStr(obj->Top);
   EXn->Text = IntToStr(obj->Left);
   EHeight->Text = IntToStr(obj->Height);
   EWidth->Text = IntToStr(obj->Width);
  }
}
//---------------------------------------------------------------------------
void __fastcall TFImg::FormClose(TObject *Sender, TCloseAction &Action)
{
  try
  {
     TIMG* obj = ((TFEditDBD*)Owner)->Editing;
     obj->Proportional = false;                               // тут false
     obj->Top = StrToInt(EYn->Text);
     obj->Left = StrToInt(EXn->Text);
     obj->Height = StrToInt(EHeight->Text);   //Òóò ïðîáëåìà! Íå çàïèñûâàåòñÿ â obj->Height çíà÷åíèå!!!
     obj->Width = StrToInt(EWidth->Text);
     obj->Repaint();
  }
  catch( EConvertError&  )
  {
   Application->MessageBox("Íå öèôðà!", "Îøèáêà" , MB_ICONERROR);
   TIMG* obj = ((TFEditDBD*)Owner)->Editing;
   EYn->Text = IntToStr(obj->Top);
   EXn->Text = IntToStr(obj->Left);
   EHeight->Text = IntToStr(obj->Height);
   EWidth->Text = IntToStr(obj->Width);
  }
}


Добавлено через 28 секунд
У меня работает.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
petlyura
Дата 12.2.2008, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 30.1.2008
Где: Харьков

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



Огромное спасибо, PPS05! Также благодарю и artsb, Lazin за участие в разрешении моей проблемы!
Теперь могу создавать рисунки один раз любого размера, не перерисовывая их в графическом редакторе каждый раз как мне надо изменить их размеры. А это бывает довольно часто.
Все! Тема закрыта!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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