欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

IOSCGContextSetLineWidth無(wú)法設(shè)置1像素線寬?-創(chuàng)新互聯(lián)

前段時(shí)間美術(shù)在驗(yàn)收界面時(shí)提了問題:為啥要求1像素寬的一個(gè)矩形框似乎卻變成了2,3個(gè)像素寬。仔細(xì)檢查過代碼后發(fā)現(xiàn),的確設(shè)置了LineWidth為1,但繪制效果卻并不如人愿。似乎在ios上繪制最低要2個(gè)像素的線寬。

10年積累的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有昭通免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。創(chuàng)新互聯(lián)建站專注于洛浦網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供洛浦營(yíng)銷型網(wǎng)站建設(shè),洛浦網(wǎng)站制作、洛浦網(wǎng)頁(yè)設(shè)計(jì)、洛浦網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造洛浦網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供洛浦網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。創(chuàng)新互聯(lián)專注于金鳳網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供金鳳營(yíng)銷型網(wǎng)站建設(shè),金鳳網(wǎng)站制作、金鳳網(wǎng)頁(yè)設(shè)計(jì)、金鳳網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造金鳳網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供金鳳網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

查看文檔后發(fā)現(xiàn)造成這個(gè)問題的原因是Quartz的抗鋸齒機(jī)制。一種粗暴的解決方案是不采用抗鋸齒,即:CGContextSetShouldAntialias(context, NO)。但是顯而易見的問題是取消抗鋸齒會(huì)導(dǎo)致繪制效果變差。而另外一種方案則比較取巧:將繪制調(diào)整到半像素坐標(biāo)系上:

比如 CGContextMoveToPoint(context, 100.0, 100.0); CGContextAddLineToPoint(context, 100.0, 200.0);改為 CGContextMoveToPoint(context, 100.5, 100.5); CGContextAddLineToPoint(context,100.5, 200.5);

這是因?yàn)椋核^的線寬指的是給定路徑的中心到兩邊的粗細(xì),換句話是在路徑的兩邊各繪制一半。如圖

IOS CGContextSetLineWidth無(wú)法設(shè)置1像素線寬?

在繪制線寬為1的直線(3,1)到(3,5)時(shí),實(shí)際上是占據(jù)了左右兩個(gè)像素各半個(gè)像素,而真正繪制時(shí)當(dāng)然是以一個(gè)像素為標(biāo)準(zhǔn)單位,所以淺藍(lán)色區(qū)域就會(huì)以相近的方式進(jìn)行渲染。這也是寬為1.0的線繪制并不準(zhǔn)確的原因。而當(dāng)將繪制中心調(diào)整到半個(gè)像素上就不會(huì)有這個(gè)問題,見右圖:(3.5,1)到(3.5,5)。詳細(xì)可以參考mozilla canvas繪制的文檔。

最后上一個(gè)在ios上繪制帶圓角矩形的代碼:

if (radius <= 0) { CGContextAddRect(context, rect); return; } CGContextSaveGState(context); CGContextTranslateCTM(context, CGRectGetMinX(rect), CGRectGetMinY(rect)); CGContextScaleCTM(context, radius, radius); NSInteger width = CGRectGetWidth(rect) / radius; NSInteger height = CGRectGetHeight(rect) / radius; NSInteger halfWidth = width / 2; NSInteger halfHeight= height / 2; CGContextMoveToPoint (context, width + 0.5, halfHeight + 0.5); CGContextAddArcToPoint(context, width + 0.5, height + 0.5, halfWidth + 0.5, height + 0.5, 1); CGContextAddArcToPoint(context, 0 + 0.5, height + 0.5, 0 + 0.5, halfHeight + 0.5, 1); CGContextAddArcToPoint(context, 0 + 0.5, 0 + 0.5, halfWidth + 0.5, 0 + 0.5, 1); CGContextAddArcToPoint(context, width + 0.5, 0 + 0.5, width + 0.5, halfHeight + 0.5, 1); CGContextClosePath(context); CGContextRestoreGState(context);

原文轉(zhuǎn)載:http://xiangwangfeng.com/2012/03/24/為啥cgcontextsetlinewidth設(shè)置不了1pixel線框?/

以下是自己測(cè)試得出的結(jié)論,如有異意請(qǐng)各位老師不吝賜教,謝謝!

由于retina屏幕是640像素,而非retina是320,所以,分兩種情況,在retina屏幕下和非retina屏幕下。

畫一條從點(diǎn)(10.0, 10.0)到點(diǎn)(10.0, 100.0)的直線和點(diǎn)(10.5, 10.5)到點(diǎn)(10.5, 100.5)的直線,產(chǎn)生的樣式,上面都解釋了。

我想說的是從點(diǎn)(10.3, 10.3)到點(diǎn)(10.3, 100.3)的黑色一個(gè)像素的直線,CGContextSetShouldAntialias(context, YES)。

一、在retina屏幕下

==IOS CGContextSetLineWidth無(wú)法設(shè)置1像素線寬?==這個(gè)圖片是我畫出的線放大后的效果,我計(jì)算了,它繪制的是20、21、22這三個(gè)像素值,也就是說10.3 * 2 = 20.6;那么它會(huì)將第21個(gè)像素值繪制黑色,兩邊的繪制暗色。

二、在非retina屏幕下

==IOS CGContextSetLineWidth無(wú)法設(shè)置1像素線寬?==這個(gè)圖片是我畫出的線放大后的效果,計(jì)算后,它繪制的是10、11這兩個(gè)像素值,那么它會(huì)將第11個(gè)像素值繪制黑色,10的繪制成暗色。

我還要說從點(diǎn)(10.7, 10.7)到點(diǎn)(10.7, 100.7)的黑色一個(gè)像素的直線,CGContextSetShouldAntialias(context, YES)。

一、在retina屏幕下

圖片樣式還是一樣的,但是位置變了,這次畫的是21、22、23這三個(gè)像素值,也就是說10.7 * 2 = 21.4;那么他是將第22個(gè)像素值繪制黑色,兩邊的繪制暗色。

二、在非retina屏幕下

==IOS CGContextSetLineWidth無(wú)法設(shè)置1像素線寬?==這個(gè)圖片是我畫出的線放大后的效果,計(jì)算后,它繪制的是11、12這兩個(gè)像素值,那么它會(huì)將第11個(gè)像素值繪制黑色,12的繪制成暗色。

在說一說CGContextSetShouldAntialias(context, NO)。10.3和10.7的結(jié)果如下

一、在retina屏幕下

繪制位置都一樣,但是樣式變了,變成沒有暗色全是黑色。

二、在非retina屏幕下

位置樣式都變了,顏色只是黑色,并且都只畫了第11個(gè)像素

總結(jié)-----

其實(shí)就一句話,“所謂的線寬指的是給定路徑的中心到兩邊的粗細(xì),換句話是在路徑的兩邊各繪制一半”。這個(gè)原理明白了,啥都沒問題了。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文標(biāo)題:IOSCGContextSetLineWidth無(wú)法設(shè)置1像素線寬?-創(chuàng)新互聯(lián)
分享路徑:http://chinadenli.net/article12/cehsgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、移動(dòng)網(wǎng)站建設(shè)、電子商務(wù)、響應(yīng)式網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)公司、營(yíng)銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
国语对白刺激高潮在线视频| 99精品国产自在现线观看| 日韩精品少妇人妻一区二区| 国产在线不卡中文字幕| 人妻久久一区二区三区精品99| 高清一区二区三区大伊香蕉| 大香蕉伊人一区二区三区| 男人把女人操得嗷嗷叫| 欧美区一区二在线播放| 欧美91精品国产自产| 欧美精品亚洲精品日韩专区| 国产又色又爽又黄又免费| 年轻女房东2中文字幕| 欧美国产日产综合精品| 日韩高清毛片免费观看| 激情三级在线观看视频| 九九热视频网在线观看| 99久久精品视频一区二区| 熟女少妇久久一区二区三区| 极品少妇嫩草视频在线观看| 中文字幕区自拍偷拍区| 国产精品视频一区二区秋霞| 亚洲精品蜜桃在线观看| 亚洲欧美中文日韩综合| 久久亚洲精品成人国产| 久久福利视频这里有精品| 国产欧美精品对白性色| 国产精品十八禁亚洲黄污免费观看| 国产精品日本女优在线观看| 欧美日韩精品一区免费| 午夜成年人黄片免费观看| 在线欧美精品二区三区| 国产精品九九九一区二区| 美女被啪的视频在线观看| 亚洲一区二区欧美激情| 久久老熟女一区二区三区福利| 91偷拍与自偷拍精品| 亚洲第一区欧美日韩在线| 国产免费操美女逼视频| 美女被啪的视频在线观看| 国产对白老熟女正在播放|