Tiedän että VB ei ole grafiikkaohjelma mutta sieltähän löytyy kaikkia kivaa kuten värejä (RGB) rajattomasti ja viivanpaksuus ym. Mutta kun QBasicistakin tuttu PAINT-funktio puuttuu. Olen kysynyt tätä aiemmin ja saanut hyvän vastauksen. Valitettavasti koneeni sekosi ja niin ohjekin hävisi. Nyt haluaisin saada ne muutaman lauseen jolla tuo rajatun alueen maalaus onnistuu.
Olen muuten opetellut VB:n käyttöä ihan kokeilemalla ja siinä keksinyt että kun vaihtaa lomakkeen(Form) tunnuksen "Load" sanaan "Paint" VB muuttuu grafiikkatilaan onko oikea metodi? Joskus haluaisin käyttää komentonäppäimiä ym. grafiikan kanssa se ei onnistu.
Kirjastosta voi lainata VB:n ohjelmointiin kirjoja, mutta niissä opetetaan vain alkeet tai sitten niin vaikeaselkoisia jossa neuvotaan niin etten ymmärrä niistä juuri mitään.
PS. QB on mielestäni paras, onneksi vanha XP on vieläkin käytettävissä.
Siis onkohan nyt VB vai VB.Net kyseessä. Jotenkin sellainen fiilis, että VB olisi, joten vastaukset sen mukaan.
Tapsa kirjoitti:
Mutta kun QBasicistakin tuttu PAINT-funktio puuttuu. Olen kysynyt tätä aiemmin ja saanut hyvän vastauksen. Valitettavasti koneeni sekosi ja niin ohjekin hävisi. Nyt haluaisin saada ne muutaman lauseen jolla tuo rajatun alueen maalaus onnistuu.
Netistä löytyi tällainen koodi:
Option Explicit Private Declare Function FloodFill Lib "gdi32" _ (ByVal hdc As Long, _ ByVal X As Long, _ ByVal Y As Long, _ ByVal crColor As Long) As Long Private Sub Form_Load() P1.AutoRedraw = True End Sub Private Sub Command1_Click() Dim ret As Long P1.FillStyle = 0 'Solid P1.FillColor = vbBlue P1.Line (50, 50)-(200, 50), vbRed P1.Line (200, 50)-(200, 200), vbRed P1.Line (200, 200)-(50, 50), vbRed 'Flood Fill works in Pixels so you need to 'Either set the picturebox scalemode to pixels 'or convert your seed coordinates with a function. FloodFill P1.hdc, 150, 100, vbRed '<--- This color needs to be the same as the bounding lines. End Sub
Tapsa kirjoitti:
VB muuttuu grafiikkatilaan onko oikea metodi?
VB on aina grafiikkatilassa*. Voit toki tunkea koodisi mihin tapahtumakäsittelijään haluat, metodi ei asiaan liity.
* VB.Net tukee suoraan myös konsolisovelluksia.
Tapsa kirjoitti:
Joskus haluaisin käyttää komentonäppäimiä ym. grafiikan kanssa se ei onnistu.
Komentontonäppäinten käsittely tapahtuu keypress, onkeydown tai onkeyup -tapahtumissa. Voit määritellä keypreview:n formille jolloin näppäinpainallukset näkyvät sen em. tapahtumissa vaikka fokus olisikin muualla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.