سلام میخواستم بدونم چطوری میشه یه Label رو به شکل قالب صابون طراحی کرد (لبه های گرد) ، ممنون
سلام میخواستم بدونم چطوری میشه یه Label رو به شکل قالب صابون طراحی کرد (لبه های گرد) ، ممنون
سلام
دوست عزیز میتونی از این کد استفاده کنی بجای عدد 45 هم میتونی به میزانی که میخوای گرد بشه عدد وارد کنی و بجای me.height هم میتونی اسم شی های دیگه رو استفاده کنی و این کد رو هم سعی کن تو resize استفاده کنی که اگه lable رو dock کردی بازم درست کار کنه در هنگام تغییر اندازه ی فرم
Private Sub Item_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize
Dim gp As New System.Drawing.Drawing2D.GraphicsPath
Dim chgcorn As Integer = 45
If chgcorn Mod 10 <> 0 Then
chgcorn = chgcorn - (chgcorn Mod 10)
End If
Dim r1 As New Rectangle(0, Me.Height - chgcorn, chgcorn, chgcorn)
Dim r2 As New Rectangle(Me.Width - chgcorn + 1, Me.Height - chgcorn, chgcorn, chgcorn)
gp.AddArc(0, 0, chgcorn, chgcorn, 180, 90)
gp.AddArc(Me.Width - chgcorn + 1, 0, chgcorn, chgcorn, 270, 90)
gp.AddRectangle(New Rectangle(0, chgcorn / 2, Me.Width, Me.Height - chgcorn))
gp.AddArc(r1, -270, 90)
gp.AddArc(r2, 360, 90)
Region = New Region(gp)
End Sub
خط آخر هم به جای Region باید بنویسی:
Label1.Region
آقای AMIN_SG از کدتون ممنونم کلی دنبالش بودم :D
آقای sagggad کد شما رو هم دانلود کردم (تو پست های دیگه) فقط یه چیزی رو رعایت نکرده بودید (شی گرایی) که اصلاحش کردم
چون قراره از این کد به دفعات استفاده نشه پس باید یه کلاس از نوع Label ساخت و متد OnPaint رو override کرد که میشه این
protected override void OnPaint(PaintEventArgs e)
{
System.Drawing.Drawing2D.GraphicsPath gp = new System.Drawing.Drawing2D.GraphicsPath();
int chgcorn = 15;
if (chgcorn % 10 != 0)
{
chgcorn = chgcorn - (chgcorn % 10);
}
Rectangle r1 = new Rectangle(0, Height - chgcorn, chgcorn, chgcorn);
Rectangle r2 = new Rectangle(Width - chgcorn + 1, Height - chgcorn, chgcorn, chgcorn);
gp.AddArc(0, 0, chgcorn, chgcorn, 180, 90);
gp.AddArc(Width - chgcorn + 1, 0, chgcorn, chgcorn, 270, 90);
gp.AddRectangle(new Rectangle(0, chgcorn / 2, Width, Height - chgcorn));
gp.AddArc(r1, -270, 90);
gp.AddArc(r2, 360, 90);
Region = new System.Drawing.Region(gp);
}
آخرین ویرایش به وسیله mthreat.info : یک شنبه 01 دی 1392 در 23:01 عصر
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Ellips_Objects
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")]
private static extern IntPtr CreateRoundRectRgn
(
int nLeftRect,
int nTopRect,
int nRightRect,
int nBottomRect,
int nWithEllipse,
int nHeightEllipse
);
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Region = Region.FromHrgn(CreateRoundRectRgn(0, 0, 200, 300, 20, 20));
label1.Region = Region.FromHrgn(CreateRoundRectRgn(0, 0, 200, 300, 20, 20));
this.Region = Region.FromHrgn(CreateRoundRectRgn(0, 0, 900, 1200, 20, 20));
}
}
}
عنوان مناسبی استفاده نکردید دوست عزیز ، الان صابون نخل داریم که 100 ساله لبه تیزه و گرد نیست
شما سرچ هم می زدی لبه گرد عنوان بهتری بود ، با صابون چیزی برات نمیاره
لطفاً از پرسیدن سوال در خصوصی خودداری کنید.
قبل از ایجاد تاپیک، حتماً قوانین سایت را مطالعه فرمایید.
قوانین پرسش های دانشجویی
برای درست وارد شدن کد در قالب C# سایت، ابتدا کد رو درون Notepad.exe کپی سپس از اونجا به سایت در قالب C# منتفل کنید
نرم افزار code manager دستیار برنامه نویسان جهت نگهداری کد ها