解决NSImage绘制的时候图像模糊
Mac下NSImage绘制模糊的原因之一是draw到了非整数像素上,框架在渲染的时候就会模糊. 针对这一原因写了以下工具:
/**
* @brief 一劳永逸的解决NSImage绘制的时候绘到浮点值像素上造成的图像模糊.
* @note 目前只hook了drawInRect:fromRect:operation:fraction:这个函数.
* @author hUyIncHun
*/ #import <Cocoa/Cocoa.h> @interface NSImage(dIR) + (void)doMyWork; @end
//
// NSImage+DrawSafely.m
// RTX
//
// Created by hUyIncHun on 13-10-24.
// #import "NSImage+DrawSafely.h"
#import <objc/runtime.h>
#import <objc/message.h> static IMP g_oldImp_drawInRect; static void newImp_drawInRect(id self, SEL _cmd, NSRect rect, NSRect rect2, NSCompositingOperation op, CGFloat f)
{
rect.origin.x = (int)rect.origin.x;
rect.origin.y = (int)rect.origin.y;
g_oldImp_drawInRect(self, _cmd, rect, rect2, op, f);
} @implementation NSImage(dIR) + (void)doMyWork
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken,^
{ g_oldImp_drawInRect =
method_setImplementation(
class_getInstanceMethod(self, @selector(drawInRect:fromRect:operation:fraction:))
, (IMP)newImp_drawInRect
);
});
} @end
解决NSImage绘制的时候图像模糊的更多相关文章
- 解决caffe绘制训练过程的loss和accuracy曲线时候报错:paste: aux4.txt: 没有那个文件或目录 rm: 无法删除"aux4.txt": 没有那个文件或目录
我用的是faster-rcnn,在绘制训练过程的loss和accuracy曲线时候,抛出如下错误,在网上查找无数大牛博客后无果,自己稍微看了下代码,发现,extract_seconds.py文件的 g ...
- python 解决cv2绘制中文乱码
因为使用cv2.putText() 只能显示英文字符,中文会出现乱码问题, 因此使用PIL在图片上绘制添加中文,可以指定字体文件. 大体思路: OpenCV图片格式转换成PIL的图片格式: 使用PIL ...
- C# 解决DrawImage绘制图片拉伸产生渐变
ImageAttributes ImgAtt = new ImageAttributes(); ; ImgAtt.SetWrapMode(System.Drawing. ...
- Android 性能优化之减少UI过度绘制
什么是过度绘制(OverDraw) 在多层次重叠的UI结构里面,如果不可见的UI也在做绘制的操作,会导致某些像素区域被绘制了多次.这样就会浪费大量的CPU以及GPU资源.过度绘制最直观的影响就是会导致 ...
- 转:devicePixelRatio和webkitBackingStorePixelRatio
转:关于canvas在retina屏下绘制文字或图像模糊的解决方案 一.问题描述 最近在鼓捣canvas的时候,发现绘制在canvas上的文字(或图片)在retina屏幕上会出现显示模糊的问题,感觉很 ...
- UI神器-SOUI
前言 在Windows平台上开发客户端产品是一个非常痛苦的过程,特别是还要用C++的时候.尽管很多语言很多方法都可以开发Windows桌面程序,目前国内流行的客户端产品都是C++开发的,比如QQ,YY ...
- Android客户端性能优化(魅族资深工程师毫无保留奉献)
本文由魅族科技有限公司资深Android开发工程师degao(嵌入式企鹅圈原创团队成员)撰写,是degao在嵌入式企鹅圈发表的第一篇原创文章,毫无保留地总结分享其在领导魅族多个项目开发中的Androi ...
- MFC双缓冲绘图(2015.09.24)
问题引入: 最近在尝试编写贪吃蛇游戏时遇到这么一个问题:当系统以较快频率向窗口发送WM_PAINT消息时,调用OnPaint()函数在窗口中绘制图形就会发生闪烁现象. 问题分析: 当我们把绘图过程放在 ...
- 矢量化的HTML5拓扑图形组件设计
HT一直被客户称道的就是其全矢量化的设计特色,矢量相比传统图片好处太多了: www.hightopo.com/guide/guide/core/vector/ht-vector-guide.html ...
随机推荐
- Android Studio怎样加入工程(project)为library(针对非gradle)
这篇文章还是针对非gradle build的project,gradle build有一些区别.在Eclipse要引用别的project为本project的library非常easy,可是在Andro ...
- Android:子线程向UI主线程发送消息
在Android里,UI线程是不同意被堵塞的.因此我们要将耗时的工作放到子线程中去处理. 那么子线程耗时处理后要如何通知UI线程呢? 我们能够在UI主线程中创建一个handler对象,然后通过重写其h ...
- ORACLE-SQL(一)
迁移时间:2017年6月1日10:02:43 CreateTime--2017年6月1日09:59:30Author:Marydon 一.SQL语句 (一)基础篇 1.1.1 where 子句 1 ...
- 17、JAVA流程控制
一.IF 1.第一种形式:if if(逻辑表达式){ 语句1; 语句2; ... } 当if中只有一条语句时,可以省略{} 2.第二种形式:if-else if(逻辑表达式){ 语句块1: } els ...
- SET GLOBAL FOREIGN_KEY_CHECKS取消外键约束
今天在工作中遇到的问题,在删除一个表时报错,发现有外键约束,所以不能删除,查了下发现需要取消外键约束. SET GLOBAL FOREIGN_KEY_CHECKS=0;全局取消外键约束 SET SES ...
- Android倒计时CountDownTimer小记
Android 超简便的倒计时实现: CountDownTimer CountDownTimer由系统提供 查资料的时候 发现了CountDownTimer这个类之后 果断抛弃了曾经的倒计时做法 功 ...
- 【laravel5.4】vue分页删除
1.a标签执行ajax删除,后台删除成功后,执行vue分页对象删除对应数据 VUE.js
- 分享一个php代码创建目录的Demo
/* * 连续建目录 * string $dir 目录字符串 * int $mode 权限数字 * 返回:顺利创建或者全部已建返回true,其它方式返回false */ function makeDi ...
- 使用Python操作Memcached
1.安装 yum install memcached easy_install python-memcached 2.操作memcached import memcache mc = memcache ...
- PHP-FastCGI详解
一.什么是 FastCGI FastCGI是一个可伸缩地.高速地在HTTP server和动态脚本语言间通信的接口.多数流行的HTTP server都支持FastCGI,包括Apache.Nginx和 ...