سؤال

في أداتي ، أستخدم لوحة AA لتغيير الصفحات. تحتوي كل صفحة على لوحة خاصة بها وعندما أقوم بتغيير صفحة أرسل اللوحة بعناصر التحكم. على اللوحة التي أستخدمها كقماش لدي حدث الطلاء التالي:

    private void panelContent_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
        e.Graphics.SmoothingMode = SmoothingMode.HighQuality;

        // Paints a border around the panel to match the treeview control
        e.Graphics.DrawRectangle(Pens.CornflowerBlue,
            e.ClipRectangle.Left,
            e.ClipRectangle.Top,
            e.ClipRectangle.Width - 1,
            e.ClipRectangle.Height - 1);

        e.Graphics.Flush();

        base.OnPaint(e);
    }

هذه الطريقة ترسم بشكل أساسي حدود لطيفة حول اللوحة بحيث تبدو أفضل. لسبب ما عندما أقوم بنقل نموذج آخر فوق هذه اللوحة ، تبدأ الخطوط التي تشكل الحدود في الركض قليلاً. في بعض الأحيان سيتم رسم خطوط صغيرة من الحدود أيضًا. تحدث المشكلة فقط لبضع ثوان قبل أن تعيد اللوحة بأكملها مرة أخرى. هل هناك أي شيء يمكنني القيام به لمنع حدوث ذلك؟

هل كانت مفيدة؟

المحلول

يخبرك ClipRectangle ما هو جزء من التحكم الذي يجب إعادة طلاؤه. إذا كنت تتحرك شيئًا أكثر من ذلك ، فمن المحتمل أن يكون هذا هو تقاطع كائنك وتنقل الشخص. يمكنك استخدام هذه المعلومات لإعادة طلاء سيطرتك بكفاءة أكبر.

ربما ترغب في رسم المستطيل من (0 ، 0) إلى (panelcontent.width-1 ، panelcontent.height-1).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top