Elikkäs; miten Visual Basicilla voisi tehdä (halutun värisen) täytetyn nelikulmion? Mielellään suhteellisen nopea, API-kutsut sallittuja.
siis ei suorakulmio vaan nelikulmio, ja täytetty kiitos!
Kyllähän sä voit soveltaa tota koodia niin, että se tekee nelikulmion...vai etkö? Eikö tuossa koodissa ole määritetty kaikille pisteille arvot? Ja mielestäni ainakin yksi noista koodeista näyttäisi värjäävänkin kulmion (BF-flagi perässä)
KingOfTheWorld kirjoitti:
siis ei suorakulmio vaan nelikulmio
Tuo oli kyllä päivän paras! "Ei, en saa suorakulmiosta nelikulmiota muuttamalla kulmien koordinaatteja."
tässä nyt tosiaa kysyttii nelikulmiota, ei neliötä.
API-kutsuista en tiedä, mutta jos itse haluaa yrittää (ei välttämättä nopeuden puolesta kannattavaa VB:llä), niin minä lähtisin tekemään aluksi algoritmia, joka täyttää kolmion. Kolmioista voi sitten yhdistellä nelikulmioita tai millaisia kulmioita tahansa.
VB:n omilla piirtokäskyillä tosiaan saa vain suorakulmion. Koodaa itse yksinkertainen koodi, jolla piirrät monikulmion. Api-kutsulla sen voi täyttää värillä.
Private Declare Function ExtFloodFill Lib "Gdi32" (ByVal hdc As Long, ByVal X As Long, _
ByVal Y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long
ja miten mä hankin kaiken maailman hdc:t siihen tuherrukseeni?
ja hunajavohvelille vielä: kyllä minä yritin tehdä kolmion
täyttävää algoritmia.
KingOfTheWorld kirjoitti:
ja miten mä hankin kaiken maailman hdc:t siihen tuherrukseeni?
Kysymällä siltä objektilta, johon haluat piirtää.
Esim.
MunHdc = MunPictureBoxi.hdc 'Kokeillaan, jos Pictureboxi ois niin kiltti, että viitsisi kertoa tuon
kiitti blaze, setä, hunajavohveli, cornix, tumpelo ja miiro
EDIT: jos sais viel esimerkin
WinAPIn Polygon-funktiota voi myös käyttää yhteistyössä VB:n kanssa:
Private Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long Private Type POINTAPI x As Long y As Long End Type Private Sub Form_Click() Dim kuvio(4) As POINTAPI ' määritetään nelikulmion neljä pistettä kuvio(0).x = 50 kuvio(0).y = 10 kuvio(1).x = 90 kuvio(1).y = 50 kuvio(2).x = 50 kuvio(2).y = 90 kuvio(3).x = 10 kuvio(3).y = 50 ' valitaan täyttötapa ja täyttöväri FillStyle = 0 FillColor = vbBlue ' piirretään monikulmio Polygon Me.hdc, kuvio(0), 4 End Sub
Funktion parametrit ovat piirtoalueen hdc, taulukon ensimmäinen alkio ja kulmapisteiden määrä.
Antti Laaksosen nimi vielä kiitettävien listaan ja vielä kerran kiitokset kaikille!
Aihe on jo aika vanha, joten et voi enää vastata siihen.