1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

گرافيک در asp.net

شروع موضوع توسط hector2141 ‏15/7/13 در انجمن مهندسی کامپیوتر

  1. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,318
    تشکر شده:
    2,702
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo


    برای کار در قسمت گرافيکی ابتدا بايد فضانام های System.Drawing و System.Drawing.2D را اضافه کنيد سپس يک شئ Bitmap و يک شئ Graphics برای کار کردن تعريف کنيد:

    Dim bmp As New Bitmap (400, 400)
    Dim g As Graphics = Graphics.FromImage (bmp)
    g.Clear)Color. White)





    حال می توانيم با استفاده از متدهای Graphics به رسم اشکال مختلف بپردازيم. برای رسم هر شکل تو خالی از يک متد Draw و برای رسم هر شکل تو پر از متد Fill استفاده می کنيم . هميشه هنگام استفاده از Draw بايد يک Pen وهنگام استفاده از Fill از يک Brush استفاده کنيد:


    Dim bru As New Solid Brush (Color.Red)
    Dim ps As New Pen (Color. Blue)
    g.FillRectangle (b, New Rectangle (-10, -10, 320, 220))
    Dim rec As New Rectangle (-100, -75, 200, 100)
    g.DrawPie)ps, rec, 0, 180)





    خوب حالا نوبت نمايش عکسی است که توليد کرده ايم برای اين کار کافی است Response.contenttype ر ا تنظيم نماييم. به ياد داشته باشيد که در انتها لازم است تا با فراخوانی متد Dispose، شئ های Bitmap و Graphics را از بين ببريم:


    response.contenttype="image/jpeg"
    'Send the image to the viewer
    (bmp.save (response.outputstream, imageformat.jpeg
    bmp.dispose ()
    g.dispose ()





    خوب حالا احتمالا يک مشکل کوچکی وجود دارد آن هم اين که تمام يا قسمتی از تصوير ساخته شده قابل ديدن نيست. اين مشکل به دليل قرارگرفتن مبدا مختصات در کناره بالا و سمت چپ تصوير به وجود می آيد در حقيقت محور Yها وارونه قرار گرفته است.

    برای رفع اين مشکل از کلاس Matrix استفاده می کنيم اين کلاس با دو بردار يکه در فضای سه بعدی تعريف می شود که هر يک از اين دو بردار در حالت عادی به صورت(1,0,0) هستند. جهت چرخاندن محور Yها کافيست 1 را به 1- تبديل کنيم برای تغيير دادن محل مبدا نيز از متد Translate ماتريکس استفاده ميکنيم. سپس بايد اين تغيير را در Graphics اعمال کنيم:



    Dim mt As Matrix = New Matrix (1, 0, 0, -1, 0, 0)
    mt.Translate (150, 100)
    g.Transform = m




    دقت داشته باشيد که اين قسمت بايد بلافاصله بعد از تعريف Graphics اضافه شود.

    برای رسم اشکال سه بعدی بايد با رسم هر يک از وجوه آن اشکال به طور جداگانه آن اشکال را بسازيم. مثلا برای رسم يک مکعب بايد کد زير را وارد کنيم:


    Dim pf(5) As PointF

    '--------------- متوازی الاضلاع بالايی


    pf(0) = New PointF(120, 120)
    pf(1) = New PointF(180, 120)
    pf(2) = New PointF(150, 90)
    Pf(3) = New PointF(120, 90)
    pf(4) = New PointF(120, 120)
    g.FillPolygon (bru, pf)

    '--------------- متوازی الاضلاع كناری

    bru.Color = Color.BlueViolet
    pf(0) = New PointF(150, 90)
    pf(1) = New PointF(180, 120)
    pf(2) = New PointF(180, 180)
    pf(3) = New PointF(150, 210)
    pf(4) = New PointF(150, 90)
    g.FillPolygon(bru, pf)



    '----------------- مستطيل جلويی

    bru.Color = Color.SteelBlue
    pf(0) = New PointF(90, 90)
    pf(1) = New PointF(150, 90)
    pf(2) = New PointF(150, 210)
    pf(3) = New PointF(90, 210)
    pf(4) = New PointF(90, 90)
    g.FillPolygon(bru, pf





    منبع : ایران ای اس پی و آرتیکل
     
    یک شخص از این تشکر کرد.