第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

CGContextDrawImage在傳遞UIImage.CGImage時(shí)將圖像上下顛倒

CGContextDrawImage在傳遞UIImage.CGImage時(shí)將圖像上下顛倒

iOS
心有法竹 2019-11-22 10:18:58
有誰知道為什么CGContextDrawImage要將我的形象顛倒過來?我正在從應(yīng)用程序中加載圖像:UIImage *image = [UIImage imageNamed:@"testImage.png"];然后簡(jiǎn)單地要求核心圖形將其繪制到我的上下文中:CGContextDrawImage(context, CGRectMake(0, 0, 145, 15), image.CGImage);它在正確的位置和尺寸進(jìn)行渲染,但是圖像是顛倒的。我一定會(huì)在這里遺漏一些真正明顯的東西嗎?
查看完整描述

3 回答

?
人到中年有點(diǎn)甜

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊

代替


CGContextDrawImage(context, CGRectMake(0, 0, 145, 15), image.CGImage);

使用


[image drawInRect:CGRectMake(0, 0, 145, 15)];

在開始/結(jié)束CGcontext方法的中間。


這會(huì)將具有正確方向的圖像繪制到當(dāng)前圖像上下文中-我很確定這與UIImage保持方向知識(shí)有關(guān),而該CGContextDrawImage方法在不了解方向的情況下獲取了基礎(chǔ)原始圖像數(shù)據(jù)。


查看完整回答
反對(duì) 回復(fù) 2019-11-22
?
藍(lán)山帝景

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊

即使應(yīng)用了我提到的所有內(nèi)容,我仍然會(huì)在影像上留下戲劇。最后,我只是使用Gimp為我的所有圖像創(chuàng)建了“垂直翻轉(zhuǎn)”版本。現(xiàn)在,我不需要使用任何變換。希望這不會(huì)造成進(jìn)一步的問題。


有誰知道為什么CGContextDrawImage會(huì)顛倒繪制我的圖像?我正在從應(yīng)用程序中加載圖像:


Quartz2d使用不同的坐標(biāo)系,其原點(diǎn)位于左下角。因此,當(dāng)Quartz繪制100 * 100圖像的像素x [5],y [10]時(shí),該像素是在左下角而不是左上角繪制的。從而導(dǎo)致“翻轉(zhuǎn)”圖像。


x坐標(biāo)系匹配,因此您需要翻轉(zhuǎn)y坐標(biāo)。


CGContextTranslateCTM(context, 0, image.size.height);

這意味著我們已經(jīng)在x軸上平移了圖像0個(gè)單位,在y軸上平移了圖像的高度。但是,僅此一項(xiàng)就意味著我們的圖像仍然是上下顛倒的,只是在我們希望繪制的位置下方繪制了“ image.size.height”。


Quartz2D編程指南建議使用ScaleCTM并傳遞負(fù)值來翻轉(zhuǎn)圖像。您可以使用以下代碼執(zhí)行此操作-


CGContextScaleCTM(context, 1.0, -1.0);

在CGContextDrawImage通話之前將兩者結(jié)合起來,應(yīng)該可以正確繪制圖像。


UIImage *image = [UIImage imageNamed:@"testImage.png"];    

CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height);       


CGContextTranslateCTM(context, 0, image.size.height);

CGContextScaleCTM(context, 1.0, -1.0);


CGContextDrawImage(context, imageRect, image.CGImage);

請(qǐng)小心,如果您的imageRect坐標(biāo)與圖像的坐標(biāo)不匹配,因?yàn)檫@樣可能會(huì)導(dǎo)致意外的結(jié)果。


轉(zhuǎn)換回坐標(biāo):


CGContextScaleCTM(context, 1.0, -1.0);

CGContextTranslateCTM(context, 0, -imageRect.size.height);


查看完整回答
反對(duì) 回復(fù) 2019-11-22
?
狐的傳說

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊

兩全其美,請(qǐng)使用UIImage drawAtPoint:或drawInRect:同時(shí)指定您的自定義上下文:


UIGraphicsPushContext(context);

[image drawAtPoint:CGPointZero]; // UIImage will handle all especial cases!

UIGraphicsPopContext();

另外,您還避免使用第二個(gè)答案所做的CGContextTranslateCTM或修改您的上下文CGContextScaleCTM。


查看完整回答
反對(duì) 回復(fù) 2019-11-22
  • 3 回答
  • 0 關(guān)注
  • 1092 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)