• 0
Letos

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

Вопросы

Untitled-1.jpg

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

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


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

7 ответов на этот вопрос

  • 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

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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