Onko mahdollista tuoda kuvaa esiin siten, että se se ikäänkuin ilmestyisi tyhjästä? Tarkoitus olisi tehdä semmoinen, että kun vie hiiren kuvan päälle niin se ilmaantuu hitaasti tai ainakin asteittain esiin. Itse en löytänyt ominaisuutta millä voisin määrittää ks. objektin opacity: tai vastaavaa.
Yritin myös sellaista että ks. kohdasta avatuisi uusi formi asteittain mutta en saanut siinäkään loop:ia toimia toivotulla tavalla. Kokeilin tätä ja paria muuta mutta niistä mennään aina ensimmäisellä läpi. Yritin mm. tälläistä:
Private Sub form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim alku As Double For alku = 0.1 To 1 Me.Opacity = alku alku = alku + 0.1 Next alku End Sub
Tänks ö lot jos viitsisitte heittää jotain vinkkiä.
No ensinnäkin jos sanot for alku = 0.1 to 1, niin ainoa arvo jonka alku saa on 0.1 koska 1.1 on jo suurempi kuin 1.
Toisekseen, vaikka toi for olisi kunnossa, niin tuohan tulisi about heti, kun ei ole mitään odotusta missään välissä.
Eli kyllä toi opacity sinänsä toimii ihan ok
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim Opac As Double Me.Opacity = 0 Me.Show() Me.Refresh() For Opac = 0 To 1 Step 0.01 Me.Opacity = Opac Threading.Thread.Sleep(10) Next End Sub
Kiitos taas Grez. Mulla oli "hiukan" tuon loopin idea hakusessa :/
Pystyykö jotain tämän tapaista tehdä picturebox:lle? En ainakaan äkkiseltään löytänyt mitään tämmöiseen viittaavaa metodia.
Itse itselleni vastaten. Päivän netin selaamisen jälkeen vaikuttaisi siltä, että picturebox:lle ei ole mitään helppoa tapaa tehdä ks. toiminnallisuutta. Joten täytyne kiertaa tämä ongelma jotenkin esim.tehdä halutusta kuvasta muutama eri versio joissa opacity vaihtuu ja loopata niitä.. ei kuulosta kovin tehokkaalta mutta en nyt muutakaan keksinyt.
Moikka Sam76!
tässä yksi mahdollisuus moisen efektin aikaansaamiseksi...
Imports System.Drawing Imports System.Drawing.Imaging Imports System.Threading Public Partial Class MainForm Public bmp As Bitmap Public Sub New() Me.InitializeComponent() End Sub Sub MainFormLoad(sender As Object, e As EventArgs) bmp = New Bitmap(PictureBox1.Image) End Sub Sub MainFormShown(sender As Object, e As EventArgs) For i As Double = 0 To 100 PicOpacity(PictureBox1, bmp, i) If i > 0 AndAlso i Mod 5 = 0 Then PictureBox1.Refresh End if Next End Sub Public Sub PicOpacity(ByRef bicbox As PictureBox, _ ByVal bmpOriginal As Image, ByVal hscOpacity As Double) Dim Opacity As Single = CSng(hscOpacity / 100) bicbox.Image = bmpOriginal Dim OMatrix As ColorMatrix = _ New ColorMatrix(New Single()() _ {New Single() {1, 0, 0, 0, 0}, _ New Single() {0, 1, 0, 0, 0}, _ New Single() {0, 0, 1, 0, 0}, _ New Single() {0, 0, 0, Opacity, 0}, _ New Single() {0, 0, 0, 0, 1}}) ApplyColorMatrix(bicbox.Image, OMatrix) Thread.Sleep(5) End Sub Public Sub ApplyColorMatrix( _ ByRef MyImage As Image, _ ByRef MyMatrix As ColorMatrix) Dim ImgAtt As New ImageAttributes Dim bmpMatrix As New Bitmap( _ MyImage.Width, MyImage.Height) Dim grMatrix As Graphics = _ Graphics.FromImage(bmpMatrix) Dim hscGamma As Double hscGamma = 50 ImgAtt.SetColorMatrix(MyMatrix) grMatrix.DrawImage(MyImage, _ New Rectangle(0, 0, MyImage.Width, _ MyImage.Height), 0, 0, _ MyImage.Width, MyImage.Height, _ GraphicsUnit.Pixel, ImgAtt) MyImage = bmpMatrix grMatrix.Dispose() ImgAtt.Dispose() End Sub End Class
Kiitos taas Nea. Huhhuh, olet kyllä uskomaton.
Aihe on jo aika vanha, joten et voi enää vastata siihen.