Вот схема для тестирования: test_offsetbrush_1.sha
В схеме прямоугольник рисуется в позиции курсора, а заливка изображением может не совпадать с началом прямоугольника, так как начала заливки начинается с позиции 0,0 и продолжается мозаично (тоже касается и штриховых кистей).
В результате видим вот такое:
Внеся небольшие изменения можно сдвигать заливку, то есть подгонять под рисуемую фигуру.Добавить свойство:
@UseOffsetBrush=Сдвигать заливку на значение OffsetBrush|14|1|True,False
и добавив точку для подачи данных для сдвига:*OffsetBrush=Сдиг заливки (картинки при PatternStyle = True и штриховых линий Style = bsVertical и т.п.) при UseOffsetBrush = True в формате Y*65536 + X|4|1
В элементах будет добавлено только это:
#pas
if _prop_UseOffsetBrush then
begin
p := cardinal(ReadInteger(_Data, _data_OffsetBrush, 0));
SetBrushOrgEx(pDC, smallint(p and $FFFF), smallint(p shr 16), nil)
end;
После изменений заливка картинкой постоянно подгоняется под прямоугольник (см. пример test_offsetbrush_2.sha в архиве)
В архиве файлы из последней ревизии с дополнениями и две схемы для тестирования: test_offsetbrush_01.zip