نمایش svg با کیفیت بالا در سایزهای مختلف
یکی از مشکلاتی که قبلا باهاش دست و پنجه نرم کرده بودم ولی خب حل شده بود این بود که بتونم svg رو با کیفیت بالا رندر بگیرم روی QLabel .
چون اگر باهاش کار کرده باشید با روش عادی نمیشه کیفیت بالا گرفت و High Resolution نیست! درنتیجه خواستم نحوه اینکارو اینجا بگم شاید به درد بقیه هم خورد:
High resolution SVG on QLabel in Qt
//IconLabel is subclass of QLabel //Note: if you wanna keep Quality , you should create pixmap for all sizes (so override resizeEvent !) // this method is working normally QPixmap IconLabel::FromSvgToPixmap(const QString &SvgFile, const QSize &ImageSize) { QSvgRenderer SvgRenderer(SvgFile); QPixmap Image(ImageSize); QPainter Painter; Image.fill(Qt::transparent); Painter.begin(&Image); SvgRenderer.render(&Painter); Painter.end(); return Image; } QPixmap IconLabel::FromSvgToPixmap(const QSize &ImageSize, const QString &SvgFile) { const qreal PixelRatio = qApp->primaryScreen()->devicePixelRatio(); QSvgRenderer SvgRenderer(SvgFile); QPixmap Image(ImageSize * PixelRatio); QPainter Painter; Image.fill(Qt::transparent); Painter.begin(&Image); SvgRenderer.render(&Painter); Painter.end(); Image.setDevicePixelRatio(PixelRatio); return Image; }
درضمن اگر احیانا خواستید که QLabel رو End User بتونه تغییر اندازه بده حتما متد resizeEvent رو براش override کنید.
امیدوارم که استفاده کرده باشید ، هرسوالی بود همین پایین تو دیدگاه ها بنویسید پاسخگو هستم.
مرجع: Render SVG on QLabel
نظر یادتون نره !
خب تا انتهای این آموزش امیدوارم به خوبی هر چی رو که بوده گفته باشیم و شما به راحتی فهمیده باشید. اگر کمی گنگ بود و یا مشکلاتی داشت و هر نوع انتقاد یا پیشنهادی و سوالی داشتید می توانید در انتهای همین صفحه در قسمت نظرات بیان کنید . خیلی متشکریم بابت وقتی که گزاشتید و اچ کدینگ رو دنبال کردید.
برای اینکه خستگی از تن ما در بره می تونید ما رو به دوستانتون معرفی کنید (با به اشتراک گذاری) تا برای ما روحیه مثبتی بشه که در آموزش های آتی بهتر عمل کنیم.
از این که اینو توی یه سایت ایرانی دیدم خیلی تعجب کردم و واقعا خوشحال کننده بود. عجیبم بود که بهش رسیدم توی یه سایت ایرانی
مجکرم