Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: сделать картинку из текста, и вставить её в MSFLEX Добавлено: 31.01.11 00:06  

Автор вопроса:  Zahar | Web-сайт: partnerka-ru.info
Мне необходимо вставить вертикально-ориентированный текст в верхнюю строку MSFlexGrid. Единственный возможный варинант - это преобразовать этот текст в картинку, повернуть картинку, а потом уже эту картинку вставить в соответствующую ячейку. Может кто подскажет, как это сделать?

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 udn79



Вопросов: 2
Ответов: 95
 Профиль | | #1 Добавлено: 31.01.11 02:35
http://support.microsoft.com/kb/154515
где font.lfEscapement //угол наклона * 10

Ответить

Номер ответа: 2
Автор ответа:
 udn79



Вопросов: 2
Ответов: 95
 Профиль | | #2 Добавлено: 31.01.11 02:37
Создаешь свой шрифт на основе выбранного

Ответить

Номер ответа: 3
Автор ответа:
 Zahar



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #3
Добавлено: 01.02.11 07:57
Извиняюсь за занудство - а как всё же применить поворот шрифта не к picture, а к msflexgrid?

Ответить

Номер ответа: 4
Автор ответа:
 udn79



Вопросов: 2
Ответов: 95
 Профиль | | #4 Добавлено: 01.02.11 17:50
MyDC = GetDC(hwnd)
Call SelectObject(MyDC, CreateFontIndirect(pFont))

Ответить

Номер ответа: 5
Автор ответа:
 Zahar



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #5
Добавлено: 01.02.11 23:55
НЕ РАБОТАЕТ!!

     ;Dim font As LOGFONT
     ;Dim MyDC As Long
     ;Dim hFont As Long
     font.lfEscapement = 900 ' 90-degree rotation
     font.lfFaceName = "Arial" & Chr$(0)
     hFont = CreateFontIndirect(font)
     MyDC = GetDC(Flex.hwnd)
     prevFont = SelectObject(MyDC, hFont)
     Flex.TextMatrix(1, 1) = "Rotated Text"

Что я сделал не правильно??

Ответить

Номер ответа: 6
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #6
Добавлено: 02.02.11 00:30
наверное нужно использовать CustomDraw. Не юзал flexgrid

Ответить

Номер ответа: 7
Автор ответа:
 udn79



Вопросов: 2
Ответов: 95
 Профиль | | #7 Добавлено: 02.02.11 16:33
смотрите исходник Text90inMFGrid.rar с коментариями

http://bbs.vbstreets.ru/viewtopic.php?f=1&t=34405&start=0


Ответить

Номер ответа: 8
Автор ответа:
 Zahar



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #8
Добавлено: 03.02.11 00:15
Спасибо большое - то что надо!

Ответить

Номер ответа: 9
Автор ответа:
 udn79



Вопросов: 2
Ответов: 95
 Профиль | | #9 Добавлено: 03.02.11 06:34
Private Const DEFAULT_CHARSET = 1
Private Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" (ByVal H As Long, ByVal W As Long, ByVal E As Long, ByVal O As Long, ByVal W2 As Long, ByVal I As Long, ByVal u As Long, ByVal s As Long, ByVal c As Long, ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, ByVal PAF As Long, ByVal f As String) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long

Private Sub Command1_Click()
Dim s$
s = "Пример печати текста 90° в колонке № 0 "
With MSFlexGrid1
MakeText_90 s
.Col = 0: .Row = 0
Set .CellPicture = Picture1.Image
.CellPictureAlignment = 1
.TextMatrix(0, 0) = s
.ColWidth(0) = Picture1.TextWidth(s)
End With
'##########################################
s = "Пример печати текста 90° в колонке № 1"
With MSFlexGrid1
MakeText_90 s
.Col = 1: .Row = 0
Set .CellPicture = Picture1.Image
.CellPictureAlignment = 1
.TextMatrix(0, 0) = s
.ColWidth(1) = Picture1.TextWidth(s)
End With
End Sub


Private Sub Form_Load()
Me.ScaleMode = vbPixels
MSFlexGrid1.RowHeight(0) = MSFlexGrid1.RowHeight(0) * 10
Picture1.Height = MSFlexGrid1.RowHeight(0) / Screen.TwipsPerPixelY
Picture1.Font = MSFlexGrid1.Font
End Sub

Private Sub MakeText_90(sText As String)
Dim sClean As String
   Picture1.Cls 'очищаем
  Picture1.FontTransparent = False
  Picture1.DrawWidth = 1
    y = Picture1.ScaleHeight
  lFont = CreateFont(0, 0, 900, 0, 0, 0, 0, 0, DEFAULT_CHARSET, 0, 0, 0, 0, vbNullString)
  lFontOld = SelectObject(Picture1.hdc, lFont)
  With Picture1
For Each n In Split(sText)
            If .TextWidth(strLine & n) > .ScaleHeight Then
            .CurrentX = x: .CurrentY = y
            Picture1.Print strLine
            strLine = n
            x = x + .TextHeight("W";) * 1.22
            sClean = sClean & " "
        Else
            strLine = strLine & " " & n
        End If
            .CurrentX = x: .CurrentY = y
            Picture1.Print strLine
Next
End With
  Res = SelectObject(Picture1.hdc, lFontOld)
  Res = DeleteObject(lFont)
              sText = sClean & " "
End Sub

Ответить

Номер ответа: 10
Автор ответа:
 udn79



Вопросов: 2
Ответов: 95
 Профиль | | #10 Добавлено: 03.02.11 06:35
Это для текущего шрифта, чтоб не заморачиваться

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам