На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Качество Emf

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1 2 След.
RSS
Качество Emf, Как улучшить качество отрисовки карты в Emf
 
Если сохранить карту в мелком масштабе М 1 : 300000. Качество Emf очень сильно ухудшается. Можно ли как то это вылечить?
EmfBad.png (119.25 КБ)
 
Попробуйте разные значения для полей VisualType и Intensity  структуры TMETAFILEBUILDPARMEX, которая подается на вход функции SaveFrameToEmfEx.
Код
type
 TMETAFILEBUILDPARMEX = packed record
  Frame      : TMAPDFRAME;  // Габариты изображения в метрах на местности
  Scale      : integer;     // Масштаб изображения
  VisualType : byte;        // Тип визуализации
1 - экранный (BITMAP) качество BMP
2 - схематичный (BITMAP) качество BMP
3 - принтерный
4 - прозрачный принтерный (без задивки полигонов)
5 - контурный принтерный
  Border     : byte;        // Флаг рисования рамки
  Intensity  : byte;        // Интенсивность заливки % (0-100)
  Black      : byte;        // Флаг черно-белого изображения(1 - есть, 0 - нет)
  DontClip   : byte;        // 0 - Обрезать объекты по габариту изображения 1 - не обрезать
  Reserve    : array [0..6] of byte;  // Резерв (должен быть обнулен)
 end;

Поле VisualType может принимать следующие значения:
// ЭКРАННЫЙ ВЫВОД
//  1 - экранный (BITMAP) качество BMP
//  2 - схематичный (BITMAP) качество BMP
// ПРИНТЕРНЫЙ ВЕКТОРНЫЙ ВЫВОД
//  3 - принтерный
//  4 - прозрачный принтерный (без заливки полигонов)
//  5 - контурный принтерный
// ПРИНТЕРНЫЙ РАСТРИЗОВАННЫЙ ВЫВОД
//  6 - ПРИНТЕРНЫЙ РАСТРИЗОВАННЫЙ ВЫВОД
//  7 - ПРИНТЕРНЫЙ БЕЗ ЗАЛИВКИ ПОЛИГОНОВ
//  8 - ПРИНТЕРНЫЙ КОНТУРНЫЙ
 
Прежде всего у меня например
Intensity  : byte;        // Интенсивность заливки % (0-100)

вообще не работает.
Устанавливаю 50
Устанавливаю 10
Все тоже.

Чего-то в коде не хватает.
Остается только гадать?

MapScreen1.PlaceOut := PP_PLANE;
NameEmf := ReportPath+'ShemaRaspol.emf';
MapScreen1.PrintSelect.PlaceInp := PP_PICTURE;
parm.Frame.X1 := X1;
parm.Frame.Y1 := Y1;
parm.Frame.X2 := X2;
parm.Frame.Y2 := Y2;
parm.Intensity := 10;
parm.VisualType := 6;
MapScreen1.PrintSelect.PlaceOut := PP_PLANE;
fillchar(parm, sizeof(parm), 0);
parm.Frame := MapScreen1.PrintSelect.GetDFrame(true);
parm.Scale := MapScreen1.ViewScale;
mapSetScaleMethod(1);
MapScreen1.SaveFrameToEmfEx(NameEmf, parm); :(
 
Поле VisualType может принимать следующие значения:

Это поле тоже не работает.
Какое бы значение не устанавливал, в  результате Emf файл получается один и тот же, в том числе и по размеру до байта все совпадают, какое бы значение Intensity :=          parm.VisualType :=  не устанавливал.

Вообще не реагирует код на изменения
parm.Intensity := 10;
parm.VisualType := 7;

не пойму почему? :(
 
Вы в SaveFrameToEmfEx передаете пустую структуру, поэтому получаете всегда один и тот же результат. Заполнение нулями fillchar(parm, sizeof(parm), 0); надо делать до заполнения структуры параметрами, а не после.
 
Цитата
Сергей Викторович Сурин пишет:
не пойму почему?
Цитата
Сергей Викторович Сурин пишет:
Остается только гадать?
Работу Вам менять надо...
 
Александр, не так так однозначно :!:
Будем надеяться, что коллега все-же поймет, что помощь - это не значит "чужими ... из костра каштаны выгребать" :oops:
 
Виталий, да ведь он даже не понимает того, что делает! Тот же FillChar() - как пример.
Не каждому дано быть программистом. И нет в этом ничего обидного.
 
Прочитал.
 
Успели? Ну и хорошо. А то админы постирают... :D
Страницы: 1 2 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности