Yuri Potapoff 0 7 октября, 2006 Опубликовано 7 октября, 2006 · Жалоба Тему создаю здесь, почему, поймете ниже. Проблема в следующем: необходимо найти готовую функцию зеркального отображения TrueType шрифта в приложении Windows. При разработке очередного модуля программы Schemagee, мы столкнулись с проблемой, что в стандартном наборе функций Windows отсутствует функция зеркального отображения шрифтов. Именно поэтому пикад долго не мог правильно отображать надписи при флипе. Фирме потребовалось 10 лет, чтобы написать эту функцию. Нам хотелось бы решить проблему несколько быстрее. Может ли кто-либо помочь и дать совет, где можно найти эту функцию готовой? Или ссылку на людей. кто может помочь ее грамотно реализовать. В противном случае функцию придется писать самим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ktod 0 8 октября, 2006 Опубликовано 8 октября, 2006 (изменено) · Жалоба Может , я, конечно, вопрос до конца не понял, но: Функция зеркализации реализуется элементарно, что в растре, что на векторах. Попробуйте задачу поставить полее полно. ЗЫ: Уж не знаю кому там потребовалось десять лет на реализацию... Изменено 8 октября, 2006 пользователем ktod Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
svz 0 8 октября, 2006 Опубликовано 8 октября, 2006 (изменено) · Жалоба Проблема в следующем: необходимо найти готовую функцию зеркального отображения TrueType шрифта в приложении Windows. При разработке очередного модуля программы Schemagee, мы столкнулись с проблемой, что в стандартном наборе функций Windows отсутствует функция зеркального отображения шрифтов. Именно поэтому пикад долго не мог правильно отображать надписи при флипе. Фирме потребовалось 10 лет, чтобы написать эту функцию. Нам хотелось бы решить проблему несколько быстрее. Хе, мы это уже проходили (в ТопоРе). :cheers: Проще вручную разбирать ACAD'овские векторные шрифты. Можно попытаться поработать с мировыми координатами - перед выводом текста делать SetGraphicMode (hDC, GM_ADVANCED), SetWorldTransform(bla-bla-bla), пересчитывать координаты текста, а после того, как текст нарисован возвращать состояние Контекста в исходное состояние. Но тогда с Win9x/ME придется распрощаться - только НТ/2000. В общем, читать Фень Юаня "Программирование Графики для Windows" до полного просветления. Желаю удачи. Появилась еще идея - рисовать "прямой" текст в отдельный буфер в памяти, полученную картинку переворачивать, и перевернутое изображение накладывать на экран. Через одно место, но реализовать будет проще :-) Изменено 8 октября, 2006 пользователем svz Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arttab 0 9 октября, 2006 Опубликовано 9 октября, 2006 · Жалоба А зачем такое хитрое шаманство надо? Судя по теме форума, Вам нужно нанести текст на плату в зеркльном виде (смотрите на TOP, а пишите на BOT). Галочку миррор поставить не возможно? Или кад это не поддерживает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MikleKlinkovsky 5 9 октября, 2006 Опубликовано 9 октября, 2006 · Жалоба Появилась еще идея - рисовать "прямой" текст в отдельный буфер в памяти, полученную картинку переворачивать, и перевернутое изображение накладывать на экран. Через одно место, но реализовать будет проще :-) А перерисовка потом будет по полчаса проц грузить на 100%... Уж лучше отзеркалить в буфер используемые шрифты и перевернуть текст, а потом юзать стандартные функции не заморачиваясь о режимах, разрешении и пр. И вообще, если в Пикаде все так круто работает, то почему не заюзать пикадовскую Dll'ку? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fellow 0 9 октября, 2006 Опубликовано 9 октября, 2006 · Жалоба Если старые ОС не очень волнуют, то можно создать фонт с lfOrientation = 1800 в режиме GM_ADVANCED. Буквы фонта будут повернуты на 180 градусов, то есть зеркальное отрображение относительно оси x уже есть (не проверял). Можно пользоваться BeginPath/EndPath и самим преобразовывать и выдавать полилинии текста методом PolyPolygon (проверено). Работает достаточно быстро. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vinnetu 0 9 октября, 2006 Опубликовано 9 октября, 2006 · Жалоба Фирме потребовалось 10 лет, чтобы написать эту функцию.Серьёзными вы вещами занимаетесь! Попробуйте иначе. Я так понимаю, что время для вас не вопрос. Напишите программу, которая переворачивает плату, а потом в нужном месте напишете обычным шрифтом. ЗЫ. Вы, наверно, очень серьёзные ребята, если с такой ответственностью подходите к вопросам о надписях. Что вы разрабатываете, если не секрет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri Potapoff 0 9 октября, 2006 Опубликовано 9 октября, 2006 · Жалоба Пока речь идет о библиотекаре к нашему редактору схем Schemagee, в котором будет возможность рисовать не только символы, но и футпринты. Наличие футпринтов предполагает возможность их переноса на другую сторону платы, а это требует наличие функции зеркального преобразования текста. Использование зеркальных шрифтов с выворачиванием текста рассматривалось, но было отнесено к разделу извращений. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vinnetu 0 9 октября, 2006 Опубликовано 9 октября, 2006 · Жалоба Наличие футпринтов ... требует наличие функции зеркального преобразования текста.Зачем на плате писать шрифтами True Type? Несмотря на то, что при изготовлении PCB сейчас в основном используются лазерные плоттеры, формат ориентирован, в первую очередь, на векторные машины. Именно поэтому во всех CAD-ах используются собственные шрифты. Да и потом, при размере символов высотой 60 mil, заметите вы разницу между шрифтом Times Roman и Arial? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ktod 0 9 октября, 2006 Опубликовано 9 октября, 2006 · Жалоба Если задача стоит только на вывод текста на контекст устройства под вин32 тогда: Действительно, самый простой способ создать контекст, подключить к нему битмап, вывести на этот контекст надпись, залочить битмап, "ручками" отзеркалировать и битблитнуть наш контекст на выходной контекст устройства (экран, принтер, етц). Самое некрасивое в таком решении то, что придется написать несколько функций зеркализации для разной глубины цвета. Сам частенько пользуюсь. И тормозить будет если работать не с памятью битмапа, а например через гетпиксел+сетпиксел. Это если в терминологии MFC. Если напрямую с вин32 ничего особо не меняется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MikleKlinkovsky 5 10 октября, 2006 Опубликовано 10 октября, 2006 · Жалоба Вот, мой коллега сказал, что никаких проблем: SetLayout(hDC, LAYOUT_RTL); Правда под 98ми виндами скорее всего работать не будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fellow 0 10 октября, 2006 Опубликовано 10 октября, 2006 · Жалоба Наличие футпринтов ... требует наличие функции зеркального преобразования текста.Зачем на плате писать шрифтами True Type? Несмотря на то, что при изготовлении PCB сейчас в основном используются лазерные плоттеры, формат ориентирован, в первую очередь, на векторные машины. Именно поэтому во всех CAD-ах используются собственные шрифты. Да и потом, при размере символов высотой 60 mil, заметите вы разницу между шрифтом Times Roman и Arial? И кто, интересно, Вам нарисует сотни иероглифов для векторного шрифта? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vinnetu 0 10 октября, 2006 Опубликовано 10 октября, 2006 · Жалоба И кто, интересно, Вам нарисует сотни иероглифов для векторного шрифта Каких ещё иероглифов? А вообще вы правы. При современном уровне развития технологий, эта задача вряд ли может быть решена. Может быть, лет через 10... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri Potapoff 0 10 октября, 2006 Опубликовано 10 октября, 2006 · Жалоба Ну, допустим, иероглифы нам не нужны. Вариант с векторными шрифтами - это первый и простейший случай. Именно поэтому он используется в большинстве кадов. Тут важно соблюсти соотношение разумности красоты вывода на экран/печать и в гербер. Битовое преобразование, что порекомендовал ktod, подойдет для экрана, но что с ним потом делать в гербере. В любом случае, спасибо за советы. Попробуем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrew2000 0 10 октября, 2006 Опубликовано 10 октября, 2006 · Жалоба Засомневался - правильно-ли я понял вопрос. Тока что запустил Хранитель Экрана в WinXP - "3D Text" - там надпись замечательно крутится вокруг оси Y. Т.е. в OpenGL можно. А может и DirectX ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться