PDA

View Full Version : مبتدی: فراخوانی یک متد عمومی در یک کلاس



azita90
پنج شنبه 01 خرداد 1393, 11:32 صبح
سلام.من می خوام توی یک کلاس به اسم Rectangle متد OnPaint رو فراخوانی کنم.اما با این مشکل مواجه میشم.




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace benameKhodaGame
{
class Rectangle:ShapeClass
{
protected override void draw(int graphicWidth, int graphicHeight)
{
protected override void OnPaint(PaintEventArgs paintEvent)
{
Graphics g = paintEvent.Graphics;
SolidBrush brush = new SolidBrush(Color.Blue);
//Pen pen = new Pen(Color.AliceBlue);
g.FillRectangle(brush, 90, 30,graphicWidth , graphicHeight);
}
}
}
}








119303

esafb52
پنج شنبه 01 خرداد 1393, 14:27 عصر
دوست عزیز این متد رو نمیتونی تو اون متد تعریف و اورراید کنی

azita90
پنج شنبه 01 خرداد 1393, 18:54 عصر
دوست عزیز این متد رو نمیتونی تو اون متد تعریف و اورراید کنی
خیلی ممنون. اون مشکل رفع شد.حالا یه سوال دارم: اگه بخوام از داخل فرم اصلی متد draw از کلاس رو فراخوانی کنم(که برام یه مستطیل با طول و عرض 100 و 50 رسم کنه)، با توجه به کد زیر دچار مشکل میشم.میشه راهنمایی ام کنید به جای object sender و PaintEventArgs e چه چیزی رو باید برای draw بفرستم؟
توی کلاس Rectangle :




class Rectangle:ShapeClass
{
protected override void draw(int graphicWidth, int graphicHeight,object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;

g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality ;
//SolidBrush brush = new SolidBrush(Color.Blue);
//Pen pen = new Pen(Color.AliceBlue);
g.FillRectangle(Brushes.Blue , loc.X, loc.Y, graphicWidth, graphicHeight);
}



}



و توی فرم :




private void button1_Click(object sender, EventArgs e)
{
Rectangle r = new Rectangle();
r.draw(
}



در ضمن loc.X و loc.Y مشخص کننده ی محل رسم مستطیله که توی کلاس پدرش (ShapeClass) مقدار دهی شده و graphicWidth و graphicHeight هم همین طور.

]