Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Transparan resim Sorunu

Konu, 'C#' kısmında centauru tarafından paylaşıldı.

  1. centauru

    centauru Üye

    Kayıt:
    21 Temmuz 2008
    Mesajlar:
    195
    Beğenilen Mesajlar:
    3
    PictureBox'a Yuvarlak sekilli bir PNG resim yukledim ve etrafı transparan..
    Normalde PictureBox'ın Trasnparan olan yuzeyi arkaplanı gösteriyor..

    Ama bir kaç transparan resimi üstüste koydugumda sorun oluyor..

    Ekran Alıntısına bakarsanız nedemek istediğim daha iyi anlaşılır..

    PictureBoxları birbirini etkilemiyecek şekilde arkaplanlarını göstermenin bir yolu varmı acaba ?
     

    Ekli Dosyalar:

  2. hnatiq

    hnatiq Üye

    Kayıt:
    5 Ağustos 2011
    Mesajlar:
    181
    Beğenilen Mesajlar:
    0
    Meslek:
    Programçı
    Şehir:
    Baku, Azerbaijan
    Forma 2 pictureBox ekledim. Seçdiyim PNG resmi 128;128 boyutunda olduğundan PictureBox-larımı 128;128 olarak boyutladım.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using WindowsFormsApplication1.Properties;
    namespace WindowsFormsApplication1
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    [System.Runtime.InteropServices.DllImport("user32.dll")]
    static extern int SetWindowRgn(IntPtr hWnd, IntPtr hRgn, bool bRedraw);
    [System.Runtime.InteropServices.DllImport("gdi32.dll")]
    static extern IntPtr CreateRoundRectRgn(int x1, int y1, int x2, int y2, int cx, int cy);
    private void Form1_Load(object sender, EventArgs e)
    {
    int x = 5;
    SetWindowRgn(pictureBox1.Handle, CreateRoundRectRgn(x, x, pictureBox1.Width, pictureBox1.Height, 128 - x, 128 - x), true);
    SetWindowRgn(pictureBox2.Handle, CreateRoundRectRgn(x, x, pictureBox2.Width, pictureBox2.Height, 128 - x, 128 - x), true);
    pictureBox1.Image = Resources.YouTube_128;
    pictureBox2.Image = Resources.YouTube_128;
    }
    }
    }
     

    Ekli Dosyalar:

  3. hnatiq

    hnatiq Üye

    Kayıt:
    5 Ağustos 2011
    Mesajlar:
    181
    Beğenilen Mesajlar:
    0
    Meslek:
    Programçı
    Şehir:
    Baku, Azerbaijan
    Şöyle de yapmak olur

    private void Form1_Load(object sender, EventArgs e)
    {
    pictureBox1.Image = Resources.YouTube_128;
    pictureBox2.Image = Resources.YouTube_128;
    int x = 5;
    GraphicsPath gp1 = new GraphicsPath();
    gp1.AddEllipse(x, x, pictureBox1.Size.Width - x * 2, pictureBox1.Size.Height - x * 2);
    pictureBox1.Region = new Region(gp1);
    GraphicsPath gp2 = new GraphicsPath();
    gp2.AddEllipse(x, x, pictureBox2.Size.Width - x * 2, pictureBox2.Size.Height - x * 2);
    pictureBox2.Region = new Region(gp2);
    }