Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

проблема с TImage

6.7K
27 июля 2005 года
kasyava
28 / / 27.07.2005
Люди добрые подмогните начинающему советом...

У меня на форме есть несколько Image-ей, как сделать так чтобы во время выполнения программы их можно было таскать и изменять их размеры, как при дизайне формы.
2.0K
27 июля 2005 года
WidowMaker
212 / / 05.04.2005
Свойства : размеры и позиция ты можешь менять и во время выполнения.

Image->Height=New_Height;
Image->Width=New_Width;

Image->SetBounds(Image->Left+X-X0,Image->Top+Y-Y0,Image->Width,Image->Height);

P.S.:Почитай буксировку.
6.7K
27 июля 2005 года
kasyava
28 / / 27.07.2005
ну с тем чтобы таскать проблем у меня вроде нет...
самая заморочка как изменить размер...
Извинтеляюсь за не совсем правильный вопрос
Мне нужно чтобы размер изменялся при помощи мыши
2.0K
28 июля 2005 года
WidowMaker
212 / / 05.04.2005
Цитата:
Originally posted by kasyava
ну с тем чтобы таскать проблем у меня вроде нет...
самая заморочка как изменить размер...
Извинтеляюсь за не совсем правильный вопрос
Мне нужно чтобы размер изменялся при помощи мыши


Обрабатывай событие на Image MouseDown
и MouseMove.
Создай глобалки int X и Y, которые будут являться приращением размеров картинки.
А размер меняй в событии клика.
Image->Height+=Y;
Image->Width+=X;

12K
28 июля 2005 года
Lightpower
5 / / 28.07.2005
Цитата:
Originally posted by kasyava
Люди добрые подмогните начинающему советом...


1. В описание формы добавь строчку

 
Код:
int m_DwnX, m_DwnY;

2. Опиши события OnMouseDown и OnMouseMove
Код:
//------------------------------------------------
void __fastcall TfMain::ImageMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    m_DwnX = X;
    m_DwnY = Y;
}
//------------------------------------------------
void __fastcall TfMain::ImageMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
    const int DwnArea = 10;
    TImage *Im = (TImage *)Sender;
    int W = Im->Width,
        H = Im->Height,
        xC = Im->Width / 2,
        yC = Im->Height / 2;
    if(Shift.Contains(ssLeft)) {   // If LeftMousDown, change position or size
        if(Im->Cursor == crSizeAll) {
            Im->Left += X - m_DwnX;
            Im->Top += Y - m_DwnY;
        }else {
            if(Im->Cursor != crSizeNS) {
                if(X < xC) {
                    Im->Left += X - m_DwnX;
                    Im->Width -= X - m_DwnX;
                }else Im->Width = X ;
            }
            if(Im->Cursor != crSizeWE) {
                if(Y < yC) {
                    Im->Top += Y - m_DwnY;
                    Im->Height -= Y - m_DwnY;
                }else Im->Height = Y;
            }
        }
    }else {
        if( (abs(Y - yC) < DwnArea ) && ((X < DwnArea)||(X > W-DwnArea)) ) Im->Cursor = crSizeWE;
        else if( (abs(X - xC) < DwnArea ) && ((Y < DwnArea)||(Y > H-DwnArea)) ) Im->Cursor = crSizeNS;
        else if( ((X<DwnArea)&&(Y<DwnArea)) || ((X>W-DwnArea)&&(Y>H-DwnArea)) ) Im->Cursor = crSizeNWSE;
        else if( ((X<DwnArea)&&(Y>H-DwnArea)) || ((X>W-DwnArea)&&(Y<DwnArea)) ) Im->Cursor = crSizeNESW;
        else Im->Cursor = crSizeAll;
    }
}
//------------------------------------------------


Прорисовка сильно глючит... Разберись с алгоритмом изменения положения и размеров, а потом заюзай OnMouseUp и все изменения делай только по этому событию
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог