Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/65: Рейтинг темы: голосов - 65, средняя оценка - 4.68
Гость

Как написать в Label (текст) не горизонтально, а вертикально

19.01.2008, 12:16. Показов 12461. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Очень нужно!!!
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.01.2008, 12:16
Ответы с готовыми решениями:

Как расположить текст вертикально по центру к <label>?
Есть стилизованный переключатель, мне нужно отцентровать текст по вертикали, кто подскажет как это провернуть? &lt;div...

Как повернуть и написать вертикально текст?
Здравствуйте. Мне нужно написать на канве формы текст. Форма выкрашена в желтый цвет и на ней уже нарисованы 3 окружности. Осталось...

Как сделать в DataGridView чтобы заголовки колонок шли и горизонтально и вертикально
Подскажите как также сделать?

19
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
19.01.2008, 20:28
Встроенными средствами это сделать невозможно. Придется использовать API функции рисования (см. структуру LOGFONT)

Вот рабочий пример. Весь код скопировать в код формы:
Visual Basic
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
Private Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Const LF_FACESIZE = 32
Private Type LOGFONT
    lfHeight As Long
    lfWidth As Long
    lfEscapement As Long
    lfOrientation As Long
    lfWeight As Long
    lfItalic As Byte
    lfUnderline As Byte
    lfStrikeOut As Byte
    lfCharSet As Byte
    lfOutPrecision As Byte
    lfClipPrecision As Byte
    lfQuality As Byte
    lfPitchAndFamily As Byte
    lfFaceName(LF_FACESIZE) As Byte
End Type
Private Sub Form_Load()
    Dim RotateMe As LOGFONT
    Me.AutoRedraw = True
    Deg = 290
    Size = 20
    RotateMe.lfEscapement = Deg * 10
    RotateMe.lfHeight = (Size * -20) / Screen.TwipsPerPixelY
    rFont = CreateFontIndirect(RotateMe)
    Curent = SelectObject(Me.hdc, rFont)
    Me.CurrentX = 500
    Me.CurrentY = 200
    Me.Print ":-)"
End Sub
0
118 / 118 / 10
Регистрация: 12.05.2010
Сообщений: 1,207
11.06.2008, 00:18
А то же самое для случая элемента управления "Поле" в форме MS Access?
0
0 / 0 / 0
Регистрация: 17.08.2012
Сообщений: 9
17.08.2012, 09:43
Добрый день!
Может эта тема давно забыта, но мне пришлось воспользоваться этим кодом для поворота Label(верней получилось что использую PictureBox)
Но когда пользуюсь PrintForm не выводить на печать это Me.Print ":-)" т.е. тот PictureBox в который я запихнул ":-)"
Помогите пожалуйста!!! Как вывести на печать форму с данными PictureBox
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
17.08.2012, 09:57
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Встроенными средствами это сделать невозможно.
Я дико извиняюсь, а что мешает просто создать Label вертикально и там написать слова по буквам?
Примерно так это выглядит:
Миниатюры
Как написать в Label (текст) не горизонтально, а вертикально  
1
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
17.08.2012, 10:09
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
'Private Const LF_FACESIZE = 32
Private Type LOGFONT
    lfHeight As Long
    lfWidth As Long
    lfEscapement As Long
End Type
Private Sub Form_Load()
    Dim RotateMe As LOGFONT, Deg As Integer, Size As Integer, rFont As Long, Curent
    Me.Picture1.AutoRedraw = True
    Deg = 290 : Size = 20
    RotateMe.lfEscapement = Deg * 10
    RotateMe.lfHeight = (Size * -20) / Screen.TwipsPerPixelY
    Curent = SelectObject(Me.Picture1.hdc, CreateFontIndirect(RotateMe))
    Me.Picture1.CurrentX = 500: Me.Picture1.CurrentY = 200
    Picture1.Print ":-)"
End Sub
2
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
17.08.2012, 10:22
Вот так получается:
0
0 / 0 / 0
Регистрация: 17.08.2012
Сообщений: 9
17.08.2012, 10:45
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Я дико извиняюсь, а что мешает просто создать Label вертикально и там написать слова по буквам?
Примерно так это выглядит:
Мне надо чтоб и Буквы были под углом на 90 градусов
Название: Diam168.jpg
Просмотров: 1109

Размер: 2.4 Кб
Значения 166 и 178 меняются
А на печати так получается(((
Название: diam168 ne pech.jpg
Просмотров: 1120

Размер: 2.7 Кб
0
0 / 0 / 0
Регистрация: 17.08.2012
Сообщений: 9
17.08.2012, 10:48
Цитата Сообщение от SoftIce Посмотреть сообщение
Вот так получается:
Вложение 176560
А печатается это через PrintForm ????
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
17.08.2012, 11:03
Цитата Сообщение от Sem2044 Посмотреть сообщение
А печатается это
Эта тема не подойдет?
0
0 / 0 / 0
Регистрация: 17.08.2012
Сообщений: 9
17.08.2012, 11:25
Цитата Сообщение от SoftIce Посмотреть сообщение
Вот так получается:
Вложение 176560
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Дело в том что, я значения получаю, а потом с помощью кода LOGFONT отображаю в программе, это уже получается picturebox, а потом уже его (Picturebox а не текст) надо напечатать...
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
17.08.2012, 11:33
А так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Type LOGFONT
    lfHeight As Long
    lfWidth As Long
    lfEscapement As Long
End Type
Private Sub Form_Load()
    Dim RotateMe As LOGFONT
    Me.Picture1.AutoRedraw = True: Me.Picture2.AutoRedraw = True
    RotateMe.lfEscapement = 2700: RotateMe.lfHeight = -20 ': RotateMe.lfWidth = 10
    SelectObject Me.Picture1.hdc, CreateFontIndirect(RotateMe)
    SelectObject Me.Picture2.hdc, CreateFontIndirect(RotateMe)
    Me.Picture1.CurrentX = 300: Me.Picture1.CurrentY = Me.Picture1.Height - 700
    Me.Picture2.CurrentX = 300: Me.Picture2.CurrentY = Me.Picture2.Height - 700
    Picture1.Print "178"
    Picture2.Print "166"
End Sub
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
17.08.2012, 11:46
Или так:
Visual Basic
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
Option Explicit
Private Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Type LOGFONT
    lfHeight As Long
    lfWidth As Long
    lfEscapement As Long
    lfOrientation As Long
    lfWeight As Long
    lfItalic As Byte
    lfUnderline As Byte
    lfStrikeOut As Byte
    lfCharSet As Byte
    lfOutPrecision As Byte
    lfClipPrecision As Byte
    lfQuality As Byte
    lfPitchAndFamily As Byte
    lfFaceName(32) As Byte
End Type
Private Sub Printing(text1 As String, text2 As String)
    Dim RotateMe As LOGFONT
    Me.Picture1.AutoRedraw = True: Me.Picture2.AutoRedraw = True
    RotateMe.lfEscapement = 2700: RotateMe.lfHeight = -20
    SelectObject Me.Picture1.hdc, CreateFontIndirect(RotateMe)
    SelectObject Me.Picture2.hdc, CreateFontIndirect(RotateMe)
    Me.Picture1.CurrentX = 300: Me.Picture1.CurrentY = Me.Picture1.Height - 700
    Me.Picture2.CurrentX = 300: Me.Picture2.CurrentY = Me.Picture2.Height - 700
    Picture1.Print text1
    Picture2.Print text2
End Sub
 
Private Sub Command1_Click()
    Printing 166, 178
End Sub
1
0 / 0 / 0
Регистрация: 17.08.2012
Сообщений: 9
17.08.2012, 16:06
Спасибо за еще вариант, в принципе я реализовал в том же духе, но не выводит значения вывести на принтер, использую команду Printform
Не знаю как сделать так чтоб они видны были при печати(((( Помогите!!!
Может другими методами печатать?? Какими???
0
0 / 0 / 0
Регистрация: 17.08.2012
Сообщений: 9
20.08.2012, 11:48
Вот подумываю как-то вывести на печать через Print Screen, вот нашел тему Вывести на печать содержимое формыно не могу разобраться в коде, все красным высвечивает.
Кто может подсказать простой код чтоб сделать принт скрин формы и сразу его напечатать???
0
Заблокирован
20.08.2012, 16:37
Красным из-за того, что там другая версия VB! Конкретно .NET.
0
0 / 0 / 0
Регистрация: 17.08.2012
Сообщений: 9
20.08.2012, 17:29
Цитата Сообщение от inv.DS Посмотреть сообщение
Красным из-за того, что там другая версия VB! Конкретно .NET.
Спасибо, понял.
0
0 / 0 / 0
Регистрация: 17.08.2012
Сообщений: 9
22.08.2012, 17:49
Неужели никто не может помочь, как этот повернутый текст вывести на печать???
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
22.08.2012, 20:21
Sem2044, проверил на принтере, печатает!
Visual Basic
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
Option Explicit
Private Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Type LOGFONT
    lfHeight As Long
    lfWidth As Long
    lfEscapement As Long
    lfOrientation As Long
    lfWeight As Long
    lfItalic As Byte
    lfUnderline As Byte
    lfStrikeOut As Byte
    lfCharSet As Byte
    lfOutPrecision As Byte
    lfClipPrecision As Byte
    lfQuality As Byte
    lfPitchAndFamily As Byte
    lfFaceName(32) As Byte
End Type
Private Sub Printing(text1 As String, text2 As String)
    Dim RotateMe As LOGFONT
    Me.Picture1.AutoRedraw = True: Me.Picture2.AutoRedraw = True
    RotateMe.lfEscapement = 2700: RotateMe.lfHeight = -20
    SelectObject Me.Picture1.hdc, CreateFontIndirect(RotateMe)
    SelectObject Me.Picture2.hdc, CreateFontIndirect(RotateMe)
    Me.Picture1.CurrentX = 300: Me.Picture1.CurrentY = Me.Picture1.Height - 700
    Me.Picture2.CurrentX = 300: Me.Picture2.CurrentY = Me.Picture2.Height - 700
    Picture1.Print text1
    Picture2.Print text2
End Sub
 
Private Sub Command1_Click()
    Printing 166, 178
    Picture1.Picture = Picture1.Image: Picture2.Picture = Picture2.Image
    PrintForm
End Sub
Вложения
Тип файла: rar PrintForm.rar (1.5 Кб, 20 просмотров)
1
0 / 0 / 0
Регистрация: 17.08.2012
Сообщений: 9
25.08.2012, 09:43
Цитата Сообщение от SoftIce Посмотреть сообщение
Sem2044, проверил на принтере, печатает!
Спасибо Большое за этот код Picture1.Picture = Picture1.Image:!
Все работает, единственное что потом искал как стереть image, а то накладывается, сделал так
Visual Basic
1
2
3
If Not (Picture1.Image Is Nothing) Then
    Picture1.Picture = LoadPicture("")
End If
Еще раз БОЛЬШОЕ СПАСИБО!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.08.2012, 09:43
Помогаю со студенческими работами здесь

Как вывести данные из базы данных, не вертикально, а горизонтально, чтобы колонки были сверху ( как столбцы)
Как вывести данные из базы данных, не вертикально, а горизонтально, чтобы колонки были сверху ( как столбцы) , а значения были ниже на...

Печать страницы горизонтально, а не вертикально
Всем привет.Столкнулся с неясностью- как в билдере распечатать альбомную страницу. ( т.е. мне нужно не вертикально что бы она печаталась а...

Определить ориентацию телефона (вертикально/горизонтально)
Как узнать? Вопрос простой- Ваш телефон сейчас в вертикальном положении Ваш телефон сейчас в горизонтальном положении

Нужно написать текст вертикально.
Привет всем. у меня такая задача. нужно написать текст вертикально. Я знаю метод написания фразы вертикально, но оно выводиться с...

В IE картинки-ссылки отображаются вертикально (нужно горизонтально)
Добрый день! На странице есть элемент fieldset, внутри которого размещено несколько картинок-ссылок. Картинки должны отображаться по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru