Перейти к содержанию
  • Регистрация
  • 0
Letos

Портится канва при перерисовке компонентов

Вопрос

Рекомендуемые сообщения

  • 0

Готов поспорить у тебя использована конструкция with и ты обращаешься в полям которых нет, т.е. к чему-то другому публичному обращаешься.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
7 минут назад, POV сказал:

Готов поспорить у тебя использована конструкция with и ты обращаешься в полям которых нет, т.е. к чему-то другому публичному обращаешься.

Да нет, обращаюсь к Memo по-простому (тут по событию таймера):

...

        //отмечаем события троллейбусов
        for (unsigned int i = 0; i < TrollPositions_main.size(); i++) {
            sTrollPosition &P=TrollPositions_main[i];

            String S=P.Description;
            if(S!=NoNameSite)
            {
                TMemo *m= Form1->Memo1;

                S=P.TrollNum+": "+S;
                S+=", "+P.preDescription;
                S+=", "+P.LastKon;
                m->Lines->Add(S);
                vfScrollMemoDown(m);

//                MapRepaint();
            }
        }

...

Вызов своей функции по перерисовке карты MapRepaint(), который тут закомментирован, помогает, но не вставлять же его после каждого действия с компонентами...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Наверное, попробую компоненты разместить на другой форме (скорее всего, даже VCL), надеюсь, хоть там не будет глюка, но всё же непонятно, почему такое происходит...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Попробуй на делфи то же самое - сделать.  Я билдером пользуюсь чаще - там глюк га глюке в сравнении с делфи.

test.zip

Изменено пользователем POV

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
10 минут назад, POV сказал:

Попробуй на делфи то же самое - сделать.  Я билдером пользуюсь чаще - там глюк га глюке в сравнении с делфи.

test.zip

Да, вижу, добавил в примере на твою форму Memo, набираю там текст, канва не нарушается.

Но я с FMX очень мало работал, может разница в том, что мы по-разному рисуем канву? Я свою рисую в событии OnPaint (которое по необходимости вызывается), где вызывается функция, отрисовывающая карту и то, что на ней. И рисую, в отличие от твоего примера, между BeginScene и EndScene:

	ScreenMap->Canvas->BeginScene();
	ScreenMap->Canvas->DrawBitmap(MapBmImage,MapRect,ScreenRect,1);
	DisplayTrolls(ScreenMap);
	ScreenMap->Canvas->EndScene();

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Вот разместил компонент TMemo на дополнительной FMX форме, теперь при работе с Memo картинка на первой форме не затрагивается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

А я разобрался от чего такое было. Это моя ошибка. В событии OnPaint у меня было условие:

void __fastcall TForm1::MapImagePaint(TObject *Sender, TCanvas *Canvas, const TRectF &ARect)

{
	if(MapRepainting) DisplayMap();
}

А так работает:

void __fastcall TForm1::MapImagePaint(TObject *Sender, TCanvas *Canvas, const TRectF &ARect)

{
//	if(MapRepainting) DisplayMap();
	DisplayMap();
}

 

Почему-то действия на другом компоненте затрагивают перерисовку TImage...

Изменено пользователем Letos

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...