|
|
|
Квадрат в квадрате или обман aztecgen
|
|||
|---|---|---|---|
|
#18+
Уважаемые форумчане возник у меня вопрос и ищу я из него решение. Мне нужно сгенерировать 2d-код для последующего считывания сканером. Наткнулся на библиотеку aztecgen. Картинка формируется у меня следующим образом: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. Код рисуется, но почему то всегда урезанный вдвое. Тут либо думать почему код рисуется неправильно, либо костыльным методом загонять в data двойную строку. Если использовать двойную строку, хочется хотя бы обрезать лишнее, а для этого нужно вырезать внутренний квадрат из квадрата (см рис). С рисованием у меня тоже не ахти... Поэтому на повестке у меня 2 вопроса: 1) Что не так с функцией рисования? 2) Как вырезать внутрении квадратик и поместить его в TImage - расстояние до него со всех краев одинаковое и равно 1/4 ширины или высоты рисунка. Ширина и высота рисунка не кратна 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 09:12:52 |
|
||
|
Квадрат в квадрате или обман aztecgen
|
|||
|---|---|---|---|
|
#18+
1. Главным образом, использование TImage. Замени на TBitmap. 2. В соответствии с (1) вопрос нужно переформулировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 09:19:16 |
|
||
|
Квадрат в квадрате или обман aztecgen
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, ок сейчас попробуем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 09:21:59 |
|
||
|
Квадрат в квадрате или обман aztecgen
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, не помогло function generateMatrixToimg(data: string, img: TBitMap): boolean; var matrix: PAGMatrix; p: PAGByte; x,y: Cardinal; rec: TRect; begin Result := False; if ag_generate(matrix, PChar(data), Length(Data), nil) = AG_SUCCESS then begin p := matrix^.data; img.Height := matrix^.Height; img.Width := matrix^.Width; img.canvas.brush.color := clBlack; for y := 1 to matrix^.height do begin for x := 1 to matrix^.width do begin if p^ <> 0 then begin rec.Left := x-1; rec.top := y-1; rec.right := x; rec.bottom := y; img.canvas.Fillrect(rec); end; Inc(p); end; end; Result := True; ag_release_matrix(matrix); end; end; // а ниже через кнопочку создание битмапа вызов функции и присвоение битмапа имеджу Image.Picture.Bitmap.Assign(img) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 09:29:45 |
|
||
|
Квадрат в квадрате или обман aztecgen
|
|||
|---|---|---|---|
|
#18+
Попробовал даже в тестовом проекте, все равно половину обрезает. Может подскажете по 2-му пути что можно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 10:13:40 |
|
||
|
Квадрат в квадрате или обман aztecgen
|
|||
|---|---|---|---|
|
#18+
dartveider13Может подскажете по 2-му пути что можно сделать? Дай угадаю: юникодная делфи? dartveider13 Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 10:19:02 |
|
||
|
Квадрат в квадрате или обман aztecgen
|
|||
|---|---|---|---|
|
#18+
wadman, ну да. DelphiXE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 10:19:42 |
|
||
|
Квадрат в квадрате или обман aztecgen
|
|||
|---|---|---|---|
|
#18+
dartveider13, Какая версия Delphi? Если юникодная, то, сдаётся мне, в этой строке: Код: pascal 1. нужно использовать Код: pascal 1. . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 10:20:08 |
|
||
|
Квадрат в квадрате или обман aztecgen
|
|||
|---|---|---|---|
|
#18+
wadman, [offtopic]Как в SRC выделять текст? :)[/offtopic] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 10:21:15 |
|
||
|
Квадрат в квадрате или обман aztecgen
|
|||
|---|---|---|---|
|
#18+
wadmandartveider13Может подскажете по 2-му пути что можно сделать? Дай угадаю: юникодная делфи? dartveider13 Код: pascal 1. Ептить колотить. И правда Ваша. Так все отлично генерирует.)))) Вот сколько раз натыкаюсь уже на эти стринги... Надо читать матчасть. Спасибо Вам огромное. Все удачно сформировалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 10:23:02 |
|
||
|
Квадрат в квадрате или обман aztecgen
|
|||
|---|---|---|---|
|
#18+
alekcvpwadman, [offtopic]Как в SRC выделять текст? :)[/offtopic] http://www.sql.ru/faq/faq_topic.aspx?fid=202 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 10:27:13 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=130&tid=2041732]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
436ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 724ms |

| 0 / 0 |
