Page 1 of 1

ConvertDialogToPixels() разные значения для windows и Debian

Posted: Thu Dec 13, 2018 9:52 am
by cutecode
У меня стоит Debian 9 и виртуалка windows 10
на обоих мониторах PPI = 96 и разрешимость 1920х1080
если запускаю этот код

Code: Select all

    wxPoint pt(100, 100);
    wxPoint pt2 = ConvertDialogToPixels(pt);
то для windows имею wxPoint(175, 188)
А для Debian имею wxPoint(200, 225)

почему такая разница? Как результат у меня на разных ОС разные размеры окон и контролов в них.
Как правильно создавать контролы с одинаковыми размерами на разных ОС для одинакового PPI и одинаковой разрешимости экрана?

Пока, на вскидку, единственный выход вижу это выбрать желаемый коэфициент для одной из ОС, а затем для других ОС умножать все размеры на этот коэфициент. Я на правильном пути? или есть еще какой то другой параметр (коэфициент), о котором я не знаю?

СПАСИБО

Re: ConvertDialogToPixels() разные значения для windows и Debian

Posted: Tue Dec 18, 2018 4:44 pm
by ONEEYEMAN
Dobrogo vremeni sutok,
Nichego udivitelnogo - eto 2 raznye operacionki.
Poetomu i rekomenduetsja ispolzovat sizery dlja raspologenija kontrolov...

Spasibo.

Re: ConvertDialogToPixels() разные значения для windows и Debian

Posted: Thu Dec 20, 2018 10:18 am
by cutecode
Я хочу создать свой sizer, поэтому и спрашиваю

Re: ConvertDialogToPixels() разные значения для windows и Debian

Posted: Thu Dec 20, 2018 3:47 pm
by ONEEYEMAN
Dobrogo vremeni sutok,
A chto budet delat Vash sizer? I dlja chego on nugen?
Moget byt takoj sizer uge est?

Spasibo.

Re: ConvertDialogToPixels() разные значения для windows и Debian

Posted: Thu Dec 20, 2018 4:13 pm
by cutecode
Привет,

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

Я уже решил свою задачу вычисляя коэффициент сжатия, который вычисляется как отношение текущего значения к стандартному

Code: Select all

double shrink_x = -1, shrink_y = -1;

void calc_shrink(wxWindow* wnd)
{
	wxPoint pt(10000, 10000);
	wxPoint pt2 = wnd->ConvertDialogToPixels(pt);

	shrink_x = 17500 / (double)pt2.x;
	shrink_y = 18750 / (double)pt2.y;
}

double get_shrink_x()
{
	return shrink_x;
}

double get_shrink_y()
{
	return shrink_y;
}
Сейчас на Линукс и WIndows все окошки одинакового размера
но не уверен что это правильно решение

Спасибо

Re: ConvertDialogToPixels() разные значения для windows и Debian

Posted: Thu Dec 20, 2018 4:47 pm
by ONEEYEMAN
Dobrogo vremeni sutok,
Konechno nepravilnoe.
Chto budet esli programma budet zapuskatsja pod KDE. Na drugom Linux? Chto budet esli izmenitsja monitor, pomenjaetsja driver dlja monitora i budet vozvrashatsja drugie znachenija?

Kross-platformennoe prilogenie ne dolgno zaviset ot parametrov monitora - ono ne dlgno znat ob etom.
DElja etogo v wxWidgets suschestvujut sizers, v GTK+ - boksy, a v Qt - svoj mehanism.

No dlja polzovatelja etih bibliotek razreshenie monitora i ego parametry - "chernyj jaschik".

Spasibo.