C # или VB масштабирование текста, отправляемого на принтер

enter image description here

Я использую это для печати текста на принтер этикеток:

Private Sub PrintTextControl_PrintPage(
    ByVal sender As System.Object, 
    ByVal e As System.Drawing.Printing.PrintPageEventArgs) 
    Handles PrintTextControl.PrintPage
    '.....
    e.Graphics.DrawString("Hello World", font1, Brushes.Black, x, y, strFormat)
    '.....
End Sub

Он работает хорошо, за исключением того, что стандартные шрифты достаточно широки для принтера этикеток, даже «Arial Narrow».

Мне нравятся шрифты Arial/Sanserif, так как они чисты и понятны. Я посмотрел на сторонние нестандартные шрифты, но не повезло найти чистые четкие шрифты Airal/Sanserif.

Есть ли способ масштабировать текст, чтобы «сжать» их по горизонтали? Я не говорю об использовании меньшего шрифта, так как все слово станет меньше. Я хочу, чтобы он сохранял одну и ту же высоту, просто уменьшил ее.

0
nl ja de
Извините, забыл упомянуть. Это dll. Работает для приложения Winform и веб-приложения в нашей компании.
добавлено автор Tom, источник
добавлено автор Christensen Solutions, источник
добавлено автор Steve, источник

1 ответы

Попробуйте это:

Private Sub PrintTextControl_PrintPage(
    ByVal sender As System.Object, 
    ByVal e As System.Drawing.Printing.PrintPageEventArgs) 
    Handles PrintTextControl.PrintPage
    '.....
    Dim scaleMatrix As New Matrix()
    scaleMatrix.Scale(0.8, 1)
    e.Graphics.Transform = scaleMatrix
    e.Graphics.DrawString("Hello World", font1, Brushes.Black, x, y, strFormat)
    '.....
End Sub

Просто замените значение 0,8 на значение, соответствующее вашему принтеру.

1
добавлено
Отлично. Похоже, это то, что мне нужно. Я тестирую его сейчас.
добавлено автор Tom, источник
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)