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

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
User avatar
cutecode
Super wx Problem Solver
Super wx Problem Solver
Posts: 425
Joined: Fri Dec 09, 2016 7:28 am
Contact:

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

Post 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 и одинаковой разрешимости экрана?

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

СПАСИБО
wx 3.1.6 win/mac/linux

regards,
Alexander Saprykin
https://v2.dental-soft.ru
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 7459
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

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

Post by ONEEYEMAN »

Dobrogo vremeni sutok,
Nichego udivitelnogo - eto 2 raznye operacionki.
Poetomu i rekomenduetsja ispolzovat sizery dlja raspologenija kontrolov...

Spasibo.
User avatar
cutecode
Super wx Problem Solver
Super wx Problem Solver
Posts: 425
Joined: Fri Dec 09, 2016 7:28 am
Contact:

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

Post by cutecode »

Я хочу создать свой sizer, поэтому и спрашиваю
wx 3.1.6 win/mac/linux

regards,
Alexander Saprykin
https://v2.dental-soft.ru
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 7459
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

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

Post by ONEEYEMAN »

Dobrogo vremeni sutok,
A chto budet delat Vash sizer? I dlja chego on nugen?
Moget byt takoj sizer uge est?

Spasibo.
User avatar
cutecode
Super wx Problem Solver
Super wx Problem Solver
Posts: 425
Joined: Fri Dec 09, 2016 7:28 am
Contact:

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

Post 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 все окошки одинакового размера
но не уверен что это правильно решение

Спасибо
wx 3.1.6 win/mac/linux

regards,
Alexander Saprykin
https://v2.dental-soft.ru
ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 7459
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

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

Post 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.
Post Reply