نمایش نتایج 1 تا 4 از 4

نام تاپیک: ?How to Make GDI+ Fast

  1. #1

    ?How to Make GDI+ Fast

    سلام بچه ها ...

    +GDI خیلی کنده ... راهی وجود داره که سرعتش رو افزایش داد ؟؟؟

  2. #2
    سلام ،
    در چه مواردی؟
    به طور مثال شما میتوانید با ست کردن پروپرتیهای SmoothingMode و CompositingQuality مربوط به شی ء Graphics سرعت را افزایش دهید ، ولی افزایش سرعت در اغلب مواقع کاهش Performance را در پی خواهد داشت.
    I've just started tweeting!
    @Alireza_Maddah

  3. #3
    +GDI با ++C که Unmanaged Code هست نوشته شده. به همین دلیل در مواردی در دات نت کند عمل می کنه و این طبیعی هست.

    موفق باشید.

  4. #4
    در چه مواردی؟
    به طور مثال شما میتوانید با ست کردن پروپرتیهای SmoothingMode و CompositingQuality مربوط به شی ء Graphics سرعت را افزایش دهید ، ولی افزایش سرعت در اغلب مواقع کاهش Performance را در پی خواهد داشت.
    اون کارها رو کردم ... حتی خاصیت setstyle یوزرکنترلم به AllPaintingInWmPaint ,OptimizedDoubleBuffer ,UserPaint (مواردی که تو اینترنت سرچ کردم برای افزایش سرعت ترسیم در +GDI) اما هنوز خیلی کنده !!!!

    ببین من میخوام مثلا یک برنامه نقاشی درست کنم مثل Paint که کاربر با کلیک روی یک نقطه و کشیدن موس به نقطه دیگه یک خط صاف ترسیم کنه ... من از این کد استفاده میکنم :


    Private mhold As Image
    Private m_start As Point
    PrivateSub PaintBoard_MouseDown(ByVal sender AsObject, ByVal e As System.Windows.Forms.MouseEventArgs) HandlesMe.MouseDown
    m_start = e.Location
    EndSub
    PrivateSub PaintBoard_MouseMove(ByVal sender AsObject, ByVal e As System.Windows.Forms.MouseEventArgs) HandlesMe.MouseMove
    If e.Button = Windows.Forms.MouseButtons.Left Then
    Dim mypen AsNew Pen(Color.Black, 3)
    Using g As Graphics = CreateGraphics()
    g.DrawImage(mhold, 0, 0)
    g.DrawLine(mypen, m_start.X, m_start.Y, e.X, e.Y)
    EndUsing
    EndIf
    EndSub
    PrivateSub PaintBoard_MouseUp(ByVal sender AsObject, ByVal e As System.Windows.Forms.MouseEventArgs) HandlesMe.MouseUp
    If e.Button = Windows.Forms.MouseButtons.Left Then
    Using g As Graphics = Graphics.FromImage(mhold)
    g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
    Dim mypen AsNew Pen(Color.Black, 3)
    g.DrawLine(mypen, m_start.X, m_start.Y, e.X, e.Y)
    Me.Image = mhold
    EndUsing
    EndIf
    EndSub


    همه چیز درست کار میکنه ، منتها تو رویداد MouseMove باید کل تصویر دوباره ترسیم بشه که +GDI خیلی کند این کار رو میکنه ...
    می خواستم ببینم راهی وجود داره که سرعت +GDI رو تو این موارد افزایش داد ؟؟؟؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •