Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB6: Tekstin kiertäminen

sooda [08.12.2003 18:15:08]

#

Kirjoittaa tekstiä tietyssä kulmassa pictuurilaatikkoon(Picture1) jonka luot formille. Jostain syystä ei uskalla kirjoittaa suoraan formille vaan siihen tarvitsee piktuurilaatikon.

Private Const LF_FACESIZE = 20
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 As String * LF_FACESIZE
End Type
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 Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Private Sub Picture1_click()

    Dim Fontti As LOGFONT
    Dim FonttiKoko As Long
    Dim FonttiHanska As Long
    Dim Fontikka As Long

    FonttiKoko = 20 'fontin koko
    Fontti.lfEscapement = 1800 'rotaatioaste * 10
    Fontti.lfFaceName = "Arial" & Chr(0) 'fontin nimi + terminaattori perään
    Fontti.lfHeight = (FonttiKoko * -20) / Screen.TwipsPerPixelY 'erikoista laskentaa
    FonttiHanska = CreateFontIndirect(Fontti) 'haetaan hanska
    Fontikka = SelectObject(Picture1.hDC, FonttiHanska) 'viedään fontti pictuurilaatikkoon

    Picture1.CurrentX = Picture1.Width / 2 'viedään kursori keskelle
    Picture1.CurrentY = Picture1.Height / 2 'jotta teksti näkyisi kunnolla
    Picture1.Print "Pää alaspäin!" 'ja ulostetaan tekstiä

    SelectObject Picture1.hDC, Fontikka 'ja sitten...
    DeleteObject FonttiHanska '...tapetaan turha fontti

End Sub

SQ [11.12.2003 20:44:26]

#

hieno. :)

kenkku [11.12.2003 20:48:03]

#

Ihan kiva on.

Lumi-ukkeli [28.02.2005 07:55:37]

#

Hieman hienompi tulee jos laittaa Picture1_Mousedowniin
ja sitten laittaa

Picture1.Cls
Picture1.CurrentX = X
Picture1.CurrentY = Y

Mutta hienohan toi koodi on siltikin.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta