Добрый день
Разбираюсь с языком.
Поставил новую версию 3.7. Похоже, что перестало работать событие EVT_SCREENRESIZE. В 3.6 работает, а сейчас при изменении размера окна никакого события не происходит.
Или что-то изменилось в новой версии при работе с изменением размера экрана?
pixilang 3.7
- NightRadio
- Site Admin
- Posts: 3955
- Joined: Fri Jan 23, 2004 12:28 am
- Location: Ekaterinburg. Russia
- Contact:
Re: pixilang 3.7
Добрый день!
Действительно, это баг в новой версии. Постараюсь исправить в ближайшие дни.
Спасибо!
Действительно, это баг в новой версии. Постараюсь исправить в ближайшие дни.
Спасибо!
- NightRadio
- Site Admin
- Posts: 3955
- Joined: Fri Jan 23, 2004 12:28 am
- Location: Ekaterinburg. Russia
- Contact:
Re: pixilang 3.7
Исправил. Обновление 3.7b для Windows, Linux и macOS:
http://warmplace.ru/soft/pixilang/pixilang3.7b.zip
http://warmplace.ru/soft/pixilang/pixilang3.7b.zip
Re: pixilang 3.7
Добрый день
Надеюсь проект ещё жив.
При рисовании пиксельной матрицы в v3.7b (Oct 4 2018), заметил что функции box() и fbox(), при равных координатах, размерах сторон и цвете, рисуют квадраты разного размера. Функция box() отрисовывает квадрат по X и по Y на один пиксел больше, чем функция fbox().
Это ошибка билда Pixilang или я чего то не понимаю?
Надеюсь проект ещё жив.
При рисовании пиксельной матрицы в v3.7b (Oct 4 2018), заметил что функции box() и fbox(), при равных координатах, размерах сторон и цвете, рисуют квадраты разного размера. Функция box() отрисовывает квадрат по X и по Y на один пиксел больше, чем функция fbox().
Это ошибка билда Pixilang или я чего то не понимаю?
- NightRadio
- Site Admin
- Posts: 3955
- Joined: Fri Jan 23, 2004 12:28 am
- Location: Ekaterinburg. Russia
- Contact:
Re: pixilang 3.7
Добрый день!
Это особенность работы функций box и fbox.
Размер в fbox указывает на количество закрашенных пикселей.
Размер в box указывает на расстояние между крайними линиями.
Это особенность работы функций box и fbox.
Размер в fbox указывает на количество закрашенных пикселей.
Размер в box указывает на расстояние между крайними линиями.
Re: pixilang 3.7
Благодарю.
Заметил ещё в языке отсутствует встроенная функция рисования кругов.
Накопал неплохой алгоритм Брезенхэма (Bresenham), возможно пригодится для будущих билдов pixi. Преимущества: отрисовавыет идеальные круги любых размеров, ровной формы без разрывов, без увеличения толщины линии, каждая точка отрисовывается только один раз, тем самым затрачивая минимальное количество ресурсов.
Так же есть версия для закрашенной окружности
У закрашенной есть небольшой недостаток, первая линия пикселей на полюсах круга не оптимально использует "закраску", но по логике можно оптимизировать, хотя не критично, и скорее всего не будет заметно вообще.
Заметил ещё в языке отсутствует встроенная функция рисования кругов.
Накопал неплохой алгоритм Брезенхэма (Bresenham), возможно пригодится для будущих билдов pixi. Преимущества: отрисовавыет идеальные круги любых размеров, ровной формы без разрывов, без увеличения толщины линии, каждая точка отрисовывается только один раз, тем самым затрачивая минимальное количество ресурсов.
Code: Select all
fn circleBrez($xPos, $yPos, $radius, $color){ //Окружность Брезенхэма
$x = 0;
$y = $radius;
$delta = 3 - 2 * $radius;
while($x <= $y){
dot($xPos + $x, $yPos + $y, $color);
dot($xPos - $x, $yPos + $y, $color);
dot($xPos + $x, $yPos - $y, $color);
dot($xPos - $x, $yPos - $y, $color);
dot($xPos + $y, $yPos + $x, $color);
dot($xPos - $y, $yPos + $x, $color);
dot($xPos + $y, $yPos - $x, $color);
dot($xPos - $y, $yPos - $x, $color);
if($delta < 0){
$delta = $delta + 4 * $x + 6;
}else{
if($delta >= 0){
$delta = $delta + 4 * ($x - $y) + 10;
$y = $y - 1;
}
}
$x = $x + 1;
}
}
Code: Select all
fn fcircleBrez($xPos, $yPos, $radius, $color){ //Закрашенная окружность Брезенхэма
$x = 0;
$y = $radius;
$delta = 3 - 2 * $radius;
while($x <= $y){
line($xPos + $x, $yPos + $y, $xPos - $x, $yPos + $y, $color);
line($xPos + $x, $yPos - $y, $xPos - $x, $yPos - $y, $color);
line($xPos + $y, $yPos + $x, $xPos - $y, $yPos + $x, $color);
line($xPos + $y, $yPos - $x, $xPos - $y, $yPos - $x, $color);
if($delta < 0){
$delta = $delta + 4 * $x + 6;
}else{
if($delta >= 0){
$delta = $delta + 4 * ($x - $y) + 10;
$y = $y - 1;
}
}
$x = $x + 1;
}
}
- NightRadio
- Site Admin
- Posts: 3955
- Joined: Fri Jan 23, 2004 12:28 am
- Location: Ekaterinburg. Russia
- Contact:
Re: pixilang 3.7
Спасибо за интересные примеры!
Кругов в комплекте нет, т.к. эту функцию можно реализовать множеством способов имеющимися средствами Pixilang. Два способа вы привели. Другие варианты вы можете найти в библиотеках lib/gfx_primitives.pixi и lib/gl_primitives.pixi
Пример - examples/graphics/primitives.pixi
Кругов в комплекте нет, т.к. эту функцию можно реализовать множеством способов имеющимися средствами Pixilang. Два способа вы привели. Другие варианты вы можете найти в библиотеках lib/gfx_primitives.pixi и lib/gl_primitives.pixi
Пример - examples/graphics/primitives.pixi