PDA

View Full Version : سوال: عدم اعمال transparent به بکگراند label



hahaie
یک شنبه 08 فروردین 1395, 07:53 صبح
سلام
آقا من میخوام یه lable روی یه عکس که توی picturebox هستش بذارم منتها باید زمینه لیبل شفاف باشه.Backcolor اون رو به Transparent تغییر دادم ولی اعمال نمیشه

vb8334
یک شنبه 08 فروردین 1395, 09:00 صبح
سلام دوست عزیز

کنترل لیبل خاصیت Transparent داره اما designer اجازه نمیده شما لیبل رو روی picturebox قرار بدی،دلیلش هم واضح هستش بخاطر

اینکه کنترل picturebox یک کنترل container نیست به همین دلیل هستش که والد لیبل میشه خود فرم و لیبل شما حالت Transparent نمیگیره.

منظور از اینکه picturebox یک کنترل container نیست اینه که picturebox ساخته نشده که روش چیزی قرار بگیره یا به قولی به عنوان کنترلی

برای دربرگفتن سایر کنترل ها ولی مثلآ خود فرم این قابلیت رو داره.

با این کد هم مشکلت حل میشه:




public Form1()
{
InitializeComponent();


var pos = this.PointToScreen(label1.Location);
pos = pictureBox1.PointToClient(pos);
label1.Parent = pictureBox1;
label1.Location = pos;
label1.BackColor = Color.Transparent;
}

pouria_bayat
یک شنبه 08 فروردین 1395, 09:13 صبح
به جای PictureBox از خود لیبل استفاده کن عکس میتونی بزای و Align متن رو هم بزای MiddleCneter به همین راحتی متن روی عکس نشون داده میشه... میتونی خاصیت کلیک رو غیرره ور مثل PictureBox اضافه کنی بهش.

hahaie
یک شنبه 08 فروردین 1395, 12:44 عصر
به جای PictureBox از خود لیبل استفاده کن عکس میتونی بزای و Align متن رو هم بزای MiddleCneter به همین راحتی متن روی عکس نشون داده میشه... میتونی خاصیت کلیک رو غیرره ور مثل PictureBox اضافه کنی بهش.

خب فکر کنم وقتی مناسب باشه که نخوای بیش از 2 متن روی عکس داشته باشی.البته فکر کنم با enter دادن توی لیبل مشکل حل بشه ولی یه مشکل دیگه اینه که رنگ این دو متنی که من میخوام توی دو تا سطر باشه فرق میکنه.

hahaie
دوشنبه 09 فروردین 1395, 02:41 صبح
سلام دوست عزیز

کنترل لیبل خاصیت Transparent داره اما designer اجازه نمیده شما لیبل رو روی picturebox قرار بدی،دلیلش هم واضح هستش بخاطر

اینکه کنترل picturebox یک کنترل container نیست به همین دلیل هستش که والد لیبل میشه خود فرم و لیبل شما حالت Transparent نمیگیره.

منظور از اینکه picturebox یک کنترل container نیست اینه که picturebox ساخته نشده که روش چیزی قرار بگیره یا به قولی به عنوان کنترلی

برای دربرگفتن سایر کنترل ها ولی مثلآ خود فرم این قابلیت رو داره.

با این کد هم مشکلت حل میشه:




public Form1()
{
InitializeComponent();


var pos = this.PointToScreen(label1.Location);
pos = pictureBox1.PointToClient(pos);
label1.Parent = pictureBox1;
label1.Location = pos;
label1.BackColor = Color.Transparent;
}



ممنون دوست عزیز.مشکل داشت نشون نمیداد منم کد مربوط به location لیبل رو برداشتم درست شد!
فقط چند سوال
1.Pointtoscreen و pointtoclient مربوط به چیه؟
2.اگه بخوام این لیبل متناسب با متنی که داخلش ریخته میشه در وسط این عکس(البته براساس width)قرار بگیره باید چکار کرد؟چون متن لیبل میتونه از لحاظ طول متفاوت باشه.
ممنون

mojtaba0912433
چهارشنبه 11 فروردین 1395, 04:19 صبح
در فرم لودتون بنويسن label1.parent= pictureBox1;

hahaie
پنج شنبه 12 فروردین 1395, 13:48 عصر
چه ربطی داشت خوب اینو که دوستان در بالا گفتن....

khokhan
پنج شنبه 12 فروردین 1395, 18:00 عصر
چه ربطی داشت خوب اینو که دوستان در بالا گفتن....

به جای این کار چرا ازWatermark استفاده نمی کنی !!!!!!!! ؟؟؟؟؟؟؟؟؟

public void Button1_Click(System.Object sender, System.EventArgs e)
{
Font font = new Font("Arial", 36, FontStyle.Italic);
SolidBrush brush = new SolidBrush(Color.FromArgb(64, 192, 255, 255));
brush.Color = Color.FromArgb(128, 0, 0, 0);
PictureBox1.CreateGraphics().DrawString("سال نو مبارک", font, brush, 15, 135);
}

hahaie
شنبه 14 فروردین 1395, 08:45 صبح
ممنون دوست عزیز.
ولی اگه این متن طولش متغیر باشه(متنش متغیر باشه) چطوری تنظیمش کنم که همیشه در وسط عکس قرار بگیره؟؟