گرافیک در سی شارپ
سلام دوستان من میخام ی پیکچر باکس رو به شکل ی دایره در بیارم منظورم اینه که الان که شکل ی مستطیل رو داره به شکل دایره بشه میشه راهنمایم کنید
6 پاسخ
سلام، شما برای اینکار باید یک CustomControl تعریف کنید که از کنترل PictureBox ارث بری کنه:
class OvalPictureBox : PictureBox {
public OvalPictureBox() {
this.BackColor = Color.DarkGray;
}
protected override void OnResize(EventArgs e) {
base.OnResize(e);
using (var gp = new GraphicsPath()) {
gp.AddEllipse(new Rectangle(0, 0, this.Width-1, this.Height-1));
this.Region = new Region(gp);
}
}
}
سلام استاد منظورم اینه که مثلا عرض اون پیکچر باکس پنج پیکسل باشه طولشم که بسته به اون دوتا نقطه مشخص میشه
ی عکسم قرار بدیم داخلش شکل ی خط میشه من اینکار رو انجام دادم ولی کیفیت خطایی که رسم میشه جالب نیست و حتی شکلشون
راهی به نظرتون میرسه که بشه این خطا و نقاط رو به ی شکل بهتر رسم کرد لطف میکنید کمکم کنید ی عکس از برنامه گرفتم ضمیمه کردم
ممنونم اقای احمدی ی سوال دیگه داشتم ممنون میشم اگه راهنمایم کنید ٬ شما ی پنل رو فرض کنید که دارای ی دستگاه مختصاته ٬ ما از کاربر دوتا نقطه میگیریم(x1,y1) و(x2 , y2) روی پنل این دو تا نقطه انتخاب میشن حالا ما میخایم ی خط بین این دوتا نقطه رسم کنیم من میخام این خط خاصیت کلیک داشته باشه ینی بتونم با کلیک راست روی این خط٬ خط رو حذف کنیم یا اظلاعاتی که در مورد این خط از کاربر گرفتم رو تغییر بدم این خط ممکنه نسبت به محور X زاویه دار باشه
واینکه چرا وقتی من ی خط روی ی پنل رسم میکنم با کوچیک و بزرگ کردن پنجره برنامه یا با کشیدن اسکرول بار اون پنل خط پاک میشه
سلام مجدد
در مورد سوال اولتون ای مورد یکم پیچدست، شما باید برای هر المانی که روی صفحه رسم میشه، مثل خط، متن یا هر چیز دیگه ای، باید یک کلاس تعریف کنید و بوسیله کلاس های تعریف شده و مختصاتی که دارن عملیات Click و Hover رو پیاده سازی کنید. کد کمی پیچیده ای داره
در مورد سوال دومتون، شما باید داخل رویداد Paint المان ها رو رسم کنید، چون با resize شدن فرم این ایونت فراخوانی میشه و مجدد المان نمایش داده میشه.
مچکرم استاد خب به نظرتون میشه به همون شکلی که پیکچر باکس رو تبدیل به دایره کردیم تبدیل به ی خط کنیم
سلام مجدد، شما بوسیله Custom Control ها هر شکلی که بخوایید می تونید به کنترلتون بدید و محدودیتی ندارید. ولی یه سوال، اگه خط باشه که دیگه عکسی نمایش داده نمیشه!؟؟؟