Как я устанавливаю минимальный размер окна в wxWidgets?

Если вы прочитаете справку по gnuplot

set arrow  {nohead | head | backhead | heads}
                       {size ,{,}}

, вы подумаете, что это легко, но я не получаю ожидаемого результата ни со стрелкой 1, ни со стрелкой 2. Я не знаю, что с этим не так Может быть, кто-то может объяснить. Не очень хорошим решением будет разделить стрелку на две стрелки 3 и 4.

### different front- and backheads for arrows
reset session

set arrow 1 from -9,5 to -9,-5 heads size 1,45,90 
set arrow 2 from -6,5 to -6,-5 heads size 1,90,45

set arrow 3 from -3,5 to -3,0 backhead size 1,90
set arrow 4 from -3,0 to -3,-5 head size 1,45

set arrow 5 from 0,5 to 0,-5 heads size 1,45,90 empty
set arrow 6 from 2,5 to 2,-5 heads size 1,45,60 filled

x0=8; y0=5
x1=4; y1=-5
set arrow 7 from x0,y0 to x1,y1 backhead size 1,135
set arrow 8 from x0,y0 to x1,y1 head size 1,45

plot x
### end of code

Редактировать:

На самом деле, описание немного вводит в заблуждение: backangle - это не угол backhead, а угол в задней части голова (см. стрелки 5 и 6). И похоже, что не предвидится, что стрелка имеет две разные головки. Либо у него нет головы, одна спереди или одна сзади или две одинаковые с обеих сторон. Если вы посмотрите gnuplot arrow demo , вы не найдете стрел с разными головками спереди и сзади.

В качестве обходного пути, может быть, даже проще, чем разделение стрелки (3 и 4), нарисуйте две стрелки (7 и 8) друг над другом, одну с задней головкой и одну с (передней) головкой.

Результат:

enter image description here

9
задан MaxVT 4 March 2009 в 18:27
поделиться

4 ответа

Используя SetMinSize () метод на Вашем Кадре для установки минимального размера установит предел для самой маленькой области кадра (просто протестировал его). После того, как набор, wxWidgets не позволит кадру быть измеренным меньший, чем указанное значение.

Я установил значение как это. В конструкторе, настроенном все элементы кадра. В конце после вызова Layout() метод для установки всех классификаторов и такого звоните GetSize(int *w, int *h) метод для получения размера X и Y кадра в раскладке по умолчанию. Используйте те значения для вызова SetMinSize() метод для установки того размера по умолчанию как минимума для Кадра. Это примет во внимание все различное дополнение и границы и такой настроенный кадром и содержавшими элементами.

6
ответ дан 4 December 2019 в 08:53
поделиться

В wxPerl ответ dagorym может быть записан кратко как $self->SetMinSize($self->GetSize()); после вызова к Layout().

2
ответ дан 4 December 2019 в 08:53
поделиться

Я попытался бы назвать wxFrame-> SetMinSize (wxSize) с любым wxFlexGridSizer-> GetMinSize () возвраты, должен работать, но не протестированный. Необходимо будет отметить то, что GetMinSize заявляет о coverting размеру окна прежде, чем передать его, я ожидаю.

1
ответ дан 4 December 2019 в 08:53
поделиться

Возможно, слишком поздно, но ответы, приведенные здесь, излишне сложны, вам просто нужно вызвать SetSizerAndFit(sizer), чтобы связать сайзер с фреймом, установить его начальный размер, а также установить этот размер как минимально допустимый.

15
ответ дан 4 December 2019 в 08:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: