Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.08.2013, 13:27
xslibris xslibris вне форума
Прохожий
 
Регистрация: 05.08.2013
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Разница в отображении Canvas.Font.Size

Добрый день!
Подскажите пожалуйста как правильнее будет решить проблему - есть приложение, одной из функций которого является сохранение в *png информации из таблицы. В Windows 7 картинка выглядит нормально, а в Windows XP такое ощущение будто размер шрифта увеличен минимум на 2 раза, из-за чего текст начинает перекрывать другие элементы изображения.
Изображения
Тип файла: png Windows 7.png (23.0 Кбайт, 12 просмотров)
Тип файла: png Windows XP.png (27.4 Кбайт, 12 просмотров)
Ответить с цитированием
  #2  
Старый 05.08.2013, 14:03
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

а как текст в изображение выводится?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 05.08.2013, 14:33
xslibris xslibris вне форума
Прохожий
 
Регистрация: 05.08.2013
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Текст вывожу с помошью Canvas.TextOut
Код:
 img.Canvas.TextOut(585,430,'Долг/');
 img.Canvas.TextOut(580,450,'Переплата');
Ответить с цитированием
  #4  
Старый 05.08.2013, 14:47
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

лучше выложи минимальный проект, так быстрее будет...
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 05.08.2013, 14:55
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Т.е. вы не указываете конкретный шрифт и его параметры при выводе на канву? Может имеет смысл сделать это?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 05.08.2013, 15:27
xslibris xslibris вне форума
Прохожий
 
Регистрация: 05.08.2013
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Простите за 'простыню' -
Код:
var
  img:TBitmap;
  sohr:string;
  png:TPngObject;
begin
 sohr:='отчёты\'+TntDBGrid1.fields[2].asstring+'.png';
 img:=TBitmap.Create;
 img.Height:=600;
 img.Width:=800;
 img.Transparent := False;
 img.Canvas.Brush.Color := clWhite;
 ...
//Нижняя таблица
 img.Canvas.MoveTo(30,390);
 img.Canvas.LineTo(750,390);
 img.Canvas.MoveTo(30,510);
 img.Canvas.LineTo(750,510);
 ...
 img.Canvas.MoveTo(675,390);
 img.Canvas.LineTo(675,510);
 img.Canvas.MoveTo(750,390);
 img.Canvas.LineTo(750,510);
 ...
 //Текст нижней части
 img.Canvas.Font.Size := 11;
 img.Canvas.Font.Style := [fsBold];
 img.Canvas.TextOut(30,305,'ТОО "Тұрғын үй жөндеу - Қаратау" РНН:211000211973.');
 img.Canvas.TextOut(500,305,'ИИК: KZ946010161000159806');
 img.Canvas.TextOut(30,325,'"Народный Банк Казахстана". БИК:HSBKKZKX');
 img.Canvas.TextOut(30,345,'Плательщик: '+TntDBGrid1.fields[2].asstring);
 img.Canvas.TextOut(30,365,'Адрес: '+TntDBGrid1.fields[1].asstring);
 ... 
 img.Canvas.TextOut(680,450,'К оплате');
 img.Canvas.TextOut(680,490, TntDBGrid1.Fields[4].asstring+' тг.');
 img.Canvas.Font.Style:=[];
 img.Canvas.Font.Size:=10;
 img.Canvas.TextOut(30,520,'Просим Вас оплатить задолжность в течении 10 дней.');
 img.Canvas.TextOut(30,540,'Оплата счёта производится через кассу АО "Казпочта" г. Каратау.');
 img.Canvas.TextOut(30,560,'По общим вопросам обращаться: ТОО "Тұрғын үй жөндеу - Қаратау" г. Каратау ул. Шейна №47');
 png:=TpngObject.Create;
 png.Assign(img);
 png.SaveToFile(sohr);
 img.Free;
 png.Free;
end;
Ответить с цитированием
  #7  
Старый 05.08.2013, 15:56
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

а Canvas.Font.Height при выводе в обоих системах одинаковое значение имеет?
Код:
ShowMessage(IntToStr(Canvas.Font.Height));
после
Код:
img.Canvas.Font.Size := 11;
воткнуть к примеру.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #8  
Старый 05.08.2013, 16:38
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Так и имя шрифта какое он использует? Я так и не увидел
А то ведь он текущий шрифт будет использовать, а в XP текущим был насколько я помню Tahoma, а в семерке уже Colibri стал, а это совсем другие пропорции.

ПС: Хотя попробовал на W2003 и W7 вроде одинаково все выдает. Может у вас отсутствует Tahoma в XP и идет автоподстановка на схожий шрифт?

И кстати, а что будет если пользователь у вас "случайно" поменяет столбцы в гриде местами?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 05.08.2013 в 16:58.
Ответить с цитированием
  #9  
Старый 06.08.2013, 08:45
xslibris xslibris вне форума
Прохожий
 
Регистрация: 05.08.2013
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Так и имя шрифта какое он использует? Я так и не увидел
Код:
img.Canvas.Font.Name := 'Arial';
Видимо случайно удалил, когда сокращал код для предыдущего сообщения.
Вроде стандартный шрифт для обеих систем, но надо бы глянуть, вдруг действительно в XP Arial куда-то делся...
Цитата:
Сообщение от Страдалецъ
И кстати, а что будет если пользователь у вас "случайно" поменяет столбцы в гриде местами?
Код:
Options-[goColMoving]

Последний раз редактировалось xslibris, 06.08.2013 в 08:53.
Ответить с цитированием
  #10  
Старый 06.08.2013, 08:47
xslibris xslibris вне форума
Прохожий
 
Регистрация: 05.08.2013
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
а Canvas.Font.Height при выводе в обоих системах одинаковое значение имеет?
Под Windows 7 показывает заданое значение, XP под рукой нет, вечером проверю.
Ответить с цитированием
  #11  
Старый 31.08.2013, 19:09
xslibris xslibris вне форума
Прохожий
 
Регистрация: 05.08.2013
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Код:
showmessage(img.Canvas.Font.Name+inttostr(img.Canvas.Font.Size));
и в ХР и в Семёрке говорит Arial 10
Ответить с цитированием
  #12  
Старый 31.08.2013, 20:27
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от xslibris
Код:
showmessage(img.Canvas.Font.Name+inttostr(img.Canvas.Font.Size));
и в ХР и в Семёрке говорит Arial 10
>>>>>>>>>>
Цитата:
Сообщение от NumLock
а Canvas.Font.Height при выводе в обоих системах одинаковое значение имеет?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:25.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter