Arsip: Pergantian image kedip-kedip

 
user image
more 13 years ago

ivan

Hi abang-abang delphi-id, mohon bantuannya donk. saya lagi buat aplikasi CD interaktif untuk pendidikan. semua interface dalam bentuk image hingga tombol-tombolnya dalam format PNG agar bisa transparan. saat ini sedang mengalami kendala. cara kerjanya adalah, ketika tombol ditekan maka akan mengganti gambar tombol dengan efek sedang ditekan (maksudnya sich biar agak ada efeknya gitu hehehe..) Kendalanya adalah ketika tombol di klik atau setiap pergantian backgrount di aplikasi, image berganti dengan kedip-kedip (blinking), tidak semulus seperti menggunakan flash atau macromedia director. saya pernah menanyakan ke teman bahwa harus mengakses Direct X. agar pergantian image bisa mulus Permasalahannya saya tidak mengerti apa yang dimaksud dengan mengakses Direct X. Mungkin teman-teman ada yg bisa membantu bagaimana caranya agar setiap pergantian image bisa mulus tanpa kedip-kedip (blinking). mungkin dengan contoh sourcenya. Terima kasih sebelumnya
user image
more 13 years ago

DelphiExpert

utk mudah-nya set property
DoubleBuffered:= True;
dari Form - host / parent image2 dikau... directx adalah library yg dikembangkan Microsoft utk direct access ke VGA card / teknologi video... dengan dukungan DirectX, ada juga yg pake OpenGL...
user image
more 13 years ago

pebbie

kedap-kedip mungkin karena image ditampilkan selagi proses penggantian gambar dilakukan. coba Lock objek Canvas ketika mengganti gambar lalu Unlock setelah gambar diganti.
Image1.Canvas.Lock;
... { update picture/bitmap data }
Image1.Canvas.Unlock;
user image
more 13 years ago

ivan

Saya sudah mencoba dengan cara yg diberikan oleh DelphiExpert dengan set properti DoubleBuffer:= true pada form. Namun hanya berhasil pada file image BMP saja. Sedangkan file image yg saya gunakan ada PNG agar bisa transparant dan tidak berhasil (masih tetap blinking). Kemudian saya menggunakan cara dari pebbie dengan sintax: On Mouse Down
image1.Canvas.Lock;
image1.Picture.LoadFromFile('D:/b.bmp');
image1.Canvas.Unlock;
On Mouse up
image1.Canvas.Lock;
image1.Picture.LoadFromFile('D:/a.bmp');
image1.Canvas.Unlock;
namun aplikasi hung. ataukah ada cara mengakali dengan menyimpan file image terlebih dahulu kedalam buffer baru kemudian di panggil kembali. Component PNG digunakan saya dapat dari http://pngdelphi.sourceforge.net/ project dari Gustavo Daud Mohon bantuannya. atau mungkin ada solusi lain?[/pas]
user image
more 13 years ago

pebbie

jangan langsung pake LoadFromFile.. bukannya untuk pake PNG mesti lewat TPNGObject dulu, hbs itu baru di Assign ke Image1.Picture.Bitmap?

var 
      png : TPNGObject;
...
Image1.Canvas.Lock;
...
      png := TPngObject.Create;
      png.LoadFromFile( filename );
      Image1.Picture.Bitmap.Width := png.Width;
      Image1.Picture.Bitmap.Height := png.Height;
      Image1.Picture.Bitmap.Canvas.Draw(0, 0, png);
      png.Free;
...
Image1.Canvas.Unlock;
user image
more 13 years ago

ivan

Tapi kalau di Assign ke Image1.Picture.Bitmap gambar PNG tidak bisa transparan malah terlihat backgroundnya warna putih, karena gambar PNG yg saya buat berupa gambar bulat. setelah saya coba dengan cara di Lock ternyata masih blinking dan tetap harus diset double buffer juga. Karena property doubleBuffer hanya bisa untuk image BMP, bisa gak yach di akali supaya bisa juga untuk PNG. Bermain Image susah juga yach hehehe (Pantesan photoshop harga nya mahal hehehhe..)
user image
more 13 years ago

ivan

Tapi kalau di Assign ke Image1.Picture.Bitmap gambar PNG tidak bisa transparan malah terlihat backgroundnya warna putih, karena gambar PNG yg saya buat berupa gambar bulat. setelah saya coba dengan cara di Lock ternyata masih blinking dan tetap harus diset double buffer juga. Karena property doubleBuffer hanya bisa untuk image BMP, bisa gak yach di akali supaya bisa juga untuk PNG. Bermain Image susah juga yach hehehe (Pantesan photoshop harga nya mahal hehehhe..) Mau tanya juga sebenarnya yang dimaksud Chunk itu apa yach
user image
more 13 years ago

DelphiExpert

sebenarnya teknik doublebuffering itu tidak hanya berlaku utk TBitmap aja, semua data yg di flush ke DC otomatis akan di buffer terlebih dahulu sebelum di flip mengunakan win api BitBlt ke destination DC / TCanvas (tepat-nya pada saat WM_PAINT terpicu) kalo ternyata masih ada flicker - periksa kembali teknik dikau ngeload PNG ke TPicture... atau check component TPNGObject, mungkin ada cara nyleneh yg ditempuh oleh component tsb. istilah chunk bisa diartikan potongan/block data..., see http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html
user image
more 13 years ago

pebbie

dah coba pake property Image.Transparent ? chunk itu sebenernya cuma potongan data.. tergantung konteks pembicaraannya juga chunk itu apa..
user image
more 13 years ago

ivan

Wah makasih banget untuk DelphiExpert dan pebbie. Info nya sangat membantu dan akhirnya dah bisa. Makasih banget informasinya sekali lagi I Luv Delphi- ID. OOT: Eh BTW kaosnya dah nyampe nih. kapan gathering nya hihihihi...
more ...
  • Pages:
  • 1
Share to

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com