Вверх ↑
Этот топик читают: Гость
Ответов: 3889
Рейтинг: 362
#16: 2012-05-27 15:08:35 ЛС | профиль | цитата
Обычное объявление глобальной переменной в разделяемом юните, нигде не используемое и сидевшее там сто лет, ему просто сменили тип и стали, наконец, использовать. Не понятно, что ты имеешь в виду под "отключением", это же не наследуемое свойство из ini, в каждом ini обновлённых компонентов оно и так прописано индивидуально, разве что в коде индивидуально не объявлено, а импортировано вместе с унитом Img_Draw.
карма: 1

0
Разработчик
Ответов: 25687
Рейтинг: 2088
#17: 2012-05-27 16:25:03 ЛС | профиль | цитата
1nd1g0 писал(а):
Только заливка должна быть по умолчанию в режиме, совместимом со старым компонентом.

Вооот. Еще один пункт, который надо проверить и совместить
карма: 20

0
Ответов: 3889
Рейтинг: 362
#18: 2012-05-27 16:48:38 ЛС | профиль | цитата
nesco, хватит ехидничать, всё равно Img_FloodFill в том виде, который он имеет сейчас, сделан для галочки и практически никем не использовался. Совместимость гарантирует M$, рекомендующая заменять в программах устаревший со времён 16-тибитных ОС FloodFill на ExtFloodFill с режимом FLOODFILLBORDER. По сути это просто разные способы вызова одного и того же кода. И я многократно предупреждал sla8a, что по умолчанию нужно поставить FLOODFILLBORDER, т.к. догадывался, что придёшь ты и начнёшь ругаться.

У меня тесты элементы прошли, как на экране, так и на лазерном принтере. А цветную печать проверял на виртуальном (принтере). К остальным элементам не столько претензий, но заливка у нас бредовая, простейшую цветную рисовалку не изобразить. Элементы рисования вообще мало используются, потому можно веками ждать отзывов проверяющих.

Кстати, элементам графика (PlotXXX) тоже не помешал бы разный стиль штриховки точек, мало ли, на печать выводить на монохромном графопостроителе или одноцветном лазерном принтере придётся.
карма: 1

0
Разработчик
Ответов: 25687
Рейтинг: 2088
#19: 2012-05-27 17:01:01 ЛС | профиль | цитата
sla8a писал(а):
Определяет стиль линии (только при Size = 1)

Хорошо, что с этим пунктом
Как он себя ведет при непрерывной линии, раньше рисовал
карма: 20

0
Ответов: 3889
Рейтинг: 362
#20: 2012-05-27 17:41:19 ЛС | профиль | цитата
nesco писал(а):
Хорошо, что с этим пунктом

Это ограничение относительно низкоуровневого M$ Windows GDI API, если не ошибаюсь, единственный метод борьбы - пользоваться более высокоуровневым GDI+. Но это слишком круто, боюсь. Хотя бы из простого GDI вытянуть то, что он умеет.
------------ Дoбавленo в 17.16:
Хотя нет, может вру, надо ещё попробовать использовать ExtCreatePen. Очередная замена устаревшему CreatePen.
------------ Дoбавленo в 17.41:
nesco писал(а):
Как он себя ведет при непрерывной линии, раньше рисовал

Так он её и продолжает рисовать, просто сплошную, то есть игнорирует выбранный стиль. Видимо, это происходит потому, что простой, доставшийся от древней винды 3.11 CreatePen работает в режиме "косметического" пера, у которого не было толщины более 1. В ExtCreatePen есть ещё режим "геометрического", у которого таких граблей, вроде, нет. По крайней мере, GDI+ рисует пером при любой толщине, и при этом является просто надстройкой над GDI, но там не такой большой геморрой все атрибуты выставлять и режимы выбирать.
карма: 1

0
Ответов: 1988
Рейтинг: 633
#21: 2012-05-27 22:05:26 ЛС | профиль | цитата
Думаю нужно подождать с внесением изменений на SVN, пока не горит, кому надо обновит и протестирует.
1nd1g0 писал(а):
я многократно предупреждал sla8a, что по умолчанию нужно поставить FLOODFILLBORDER

Зачем? Очень сомневаюсь что хоть кто пользовался старым элементом для заливки по контуру. Я пока не залез в pas файл, то думал что он заливает по цвету, а не по контуру. Лучше подождать и если не будет жалоб на несовместимость то оставить по умолчанию FLOODFILLSURFACE.
1nd1g0 писал(а):
GDI+ рисует пером при любой толщине

Спасибо за пример и за хорошую книгу (очень помогла). Сейчас попью чайку и выложу в новой теме наработки и пару вопросов по новым элементам GDI+. Вот старая тема: http://hiasm.com/xf/topic.php?t=57754
карма: 9

0
Ответов: 1988
Рейтинг: 633
#22: 2014-05-07 22:42:58 ЛС | профиль | цитата
nesco, что-то не так с заливкой на Context:
code_33564.txt
карма: 9

0
файлы: 1code_33564.txt [707B] [264]
Разработчик
Ответов: 25687
Рейтинг: 2088
#23: 2014-05-08 03:40:12 ЛС | профиль | цитата
sla8a писал(а):
что-то не так с заливкой на Context

А че не так, у меня оба рисунка одинаковых
карма: 20

0
Ответов: 1988
Рейтинг: 633
#24: 2014-05-08 10:08:09 ЛС | профиль | цитата
При рисовании на Context-е и выборе стили заливки с штриховкой у элементов не заливается фон, остается белый цвет. У меня так со всеми элементами, не только с прямоугольником. Тестировал на чистом, последнем HiAsm. Не исключаю что проблема только у меня. Может кто еще проверит.
error_fill.jpg
карма: 9

0
файлы: 1error_fill.jpg [25.1KB] [483]
Разработчик
Ответов: 25687
Рейтинг: 2088
#25: 2014-05-08 10:39:20 ЛС | профиль | цитата
sla8a писал(а):
остается белый цвет

Дома у меня работает нормально, на работе -- фиг, на контексте белый фон, точно как у тебя на рисунке. Странно, но похоже, что это связано как-то с системой
карма: 20

0
Ответов: 1988
Рейтинг: 633
#26: 2014-05-08 10:41:32 ЛС | профиль | цитата
nesco писал(а):
похоже, что это связано как-то с системой
XP SP3
карма: 9

0
Разработчик
Ответов: 25687
Рейтинг: 2088
#27: 2014-05-08 10:43:44 ЛС | профиль | цитата
sla8a писал(а):
XP SP3

У меня и дома, и на работе одна и та же Семерка, но видеокарты и драйвера разные
карма: 20

0
Ответов: 1988
Рейтинг: 633
#28: 2014-05-08 17:56:35 ЛС | профиль | цитата
nesco, не хватает
SetBkMode(pDC, TRANSPARENT);
Это легко заметить если перед отрисовкой прямоугольника (речь о моем примере выше), поставить элемент содержащий эту строку (Img_Text или Img_Bmp). В результате HDC начнет игнорировать прорисовку фона при использовании штриховой кисти. Почему не везде проскакивает эта ошибка, не знаю.
Наверное будет правильно добавить эту строку во все элементы использующие штриховые кисти (свойсто Style): Img_Rectangle, Img_Ellipse, Img_Arc, Img_Polygon, Img_FloodFill.
Вместо этого (hiImg_Rectangle.pas):
45 else46   br := CreateHatchBrush(ord(_prop_Style) - 2, sColor);
Это:
elsebegin         
SetBkMode(pDC, TRANSPARENT);
br := CreateHatchBrush(ord(_prop_Style) - 2, sColor);
end;

карма: 9

0
Разработчик
Ответов: 25687
Рейтинг: 2088
#29: 2014-05-08 19:22:12 ЛС | профиль | цитата
sla8a писал(а):
Наверное будет правильно добавить эту строку во все элементы использующие штриховые кисти

Согласен, но я подожду, пока ты доделаешь трансформацию. Не забудь добавить это исправление в правленные компоненты.
карма: 20

0
Ответов: 1303
Рейтинг: 405
#30: 2014-05-08 21:30:31 ЛС | профиль | цитата
На Win7-64
context.png
[offtop]sla8a, лучше выкладывать скрины в формате png.
error_fill_артефакты_jpg.png
[/offtop]
карма: 3

0
файлы: 2context.png [16.6KB] [459], error_fill_артефакты_jpg.png [60.9KB] [480]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)