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 SubTä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 SubKiitos 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 ClassKiitos taas Nea. Huhhuh, olet kyllä uskomaton.
Aihe on jo aika vanha, joten et voi enää vastata siihen.