《電子技術應用》
您所在的位置:首頁 > 顯示光電 > 設計應用 > 深入理解iPhone屏幕雙緩沖技術
深入理解iPhone屏幕雙緩沖技術
摘要: 筆者在最近項目的開發中需要使用到“屏幕雙緩沖”技術,“屏幕雙緩沖”是GUI客戶端中最經常使用的一種技術,但是這種技術在iPhone平臺似乎很少被人使用到,網上的資料基本很難找到,這點讓筆者很是不解.
Abstract:
Key words :

  筆者在最近項目的開發中需要使用到“屏幕雙緩沖技術,“屏幕雙緩沖”是GUI客戶端中最經常使用的一種技術,但是這種技術在iPhone平臺似乎很少被人使用到,網上的資料基本很難找到,這點讓筆者很是不解。

  相信大多數人都知道,所謂“屏幕雙緩沖”是指在內存中建立一個“圖形設備上下文的緩存”,所有的繪圖操作都在這個“圖形上下文緩存”上進行,在需要顯示這個“圖形上下文”的時候,再次把它更新到屏幕設備上。

  iPhone平臺提供了這樣一個API:

  CGContextRef CGBitmapContextCreate (

  void *data,

  size_t width,

  size_t height,

  size_t bitsPerComponent,

  size_t bytesPerRow,

  CGColorSpaceRef colorspace,

  CGBitmapInfo bitmapInfo

 ?。?

  這個API各個參數的意義如下:

  Ø 參數data指向繪圖操作被渲染的內存區域,這個內存區域大小應該為(bytesPerRow*height)個字節。如果對繪制操作被渲染的內存區域并無特別的要求,那么可以傳遞NULL給參數date。

  Ø 參數width代表被渲染內存區域的寬度。

  Ø 參數height代表被渲染內存區域的高度。

  Ø 參數bitsPerComponent被渲染內存區域中組件在屏幕每個像素點上需要使用的bits位,舉例來說,如果使用32-bit像素和RGB顏色格式,那么RGBA顏色格式中每個組件在屏幕每個像素點上需要使用的bits位就為32/4=8。

  Ø 參數bytesPerRow代表被渲染內存區域中每行所使用的bytes位數。

  Ø 參數colorspace用于被渲染內存區域的“位圖上下文”。

  Ø 參數bitmapInfo指定被渲染內存區域的“視圖”是否包含一個alpha(透視)通道以及每個像素相應的位置,除此之外還可以指定組件式是浮點值還是整數值。

  從接口定義中可以看出,當調用這個函數時,系統會創建一個“視圖繪制環境”,這個“視圖繪制環境”就是讀者定義的一個“視圖上下文”。當讀者在這個“視圖上下文”進行繪制操作時,系統會在定義的渲染內存區域中把繪制操作渲染成位圖數據。“視圖上下文”的像素格式由三個參數來定義,也就是每個組件占用的bits位數、colorspace以及alpha(透視),而alpha值指定了每個像素的不透明度。

  根據上面講述的知識點,筆者定義了被渲染內存區域如下:

  imageData = malloc((iFrame.size.width)*(iFrame.size.height)*32);

  筆者這里在屏幕每個像素上使用了32-bits來表示RGBA顏色格式,那么參數bitsPerComponent就為32/4=8,各個參數的定義如下:

  iDevice = CGBitmapContextCreate(imageData,iFrame.size.width,iFrame.size.height,8,32*(iFrame.size.width),iColorSpace,kCGImageAlphaPremultipliedLast);

  這里筆者獲取iColorSpace的方法如下:

  iColorSpace = CGColorSpaceCreateDeviceRGB();

  CGColorSpaceCreateDeviceRGB()方法可以獲取設備無關的RGB顏色空間,這個顏色空間需要調用CGColorSpaceRelease()進行釋放。

  在創建成功被渲染的內存區域的“視圖上下文”iDevice后,那么讀者就可以在這個被渲染的內存區域的“位圖上下文”上進行繪制操作了,正如上面所講的,所有的繪制操作將在被渲染的內存區域中被渲染成位圖數據,繪制操作如下:

  // 繪制圖片

  CGContextDrawImage(iDevice, CGRectMake(0, 0, iFrame.size.width, iFrame.size.height), aImage);

  // 繪制半透明矩形

  CGRect rt;

  rt.origin.x = 100;

  rt.origin.y = 20;

  rt.size.width = 200;

  rt.size.height = 200;

  CGContextSaveGState(iDevice);

  CGContextSetRGBFillColor(iDevice, 1.0, 1.0, 1.0, 0.5);

  CGContextFillRect(iDevice, rt);

  CGContextRestoreGState(iDevice);

  CGContextStrokePath(iDevice);

  // 繪制直線

  CGContextSetRGBStrokeColor(iDevice, 1.0, 0.0, 0.0, 1.0);

  CGPoint pt0, pt1;

  CGPoint points[2];

  pt0.x = 10;

  pt0.y = 250;

  pt1.x = 310;

  pt1.y = 250;

  points[0] = pt0;

  points[1] = pt1;

  CGContextAddLines(iDevice, points, 2);

  CGContextStrokePath(iDevice);

  可見,在被渲染的內存區域的“位圖上下文”中可以進行圖片、矩形、直線等各種繪制操作,這些操作被渲染成位圖數據,讀者可以通過如下方法獲取到這個被渲染的“位圖”:

  -(void)drawRect:(CGRect)rect {

  // Drawing code

  UIGraphicsGetCurrentContext();

  UIImage* iImage = [UIImage imageNamed:@“merry.png”];

 ?。踚OffScreenBitmap DrawImage:iImage.CGImage];

  UIImage* iImage_1 = [UIImage imageWithCGImage:[iOffScreenBitmap Gc]];

  [iImage_1 drawInRect:CGRectMake(0, 0, 120, 160)];

  }

  上面的代碼中,通過iOffScreenBitmap的DrawImage:CGImageRef方法把圖片merry.png繪制到屏幕雙緩沖中,并接著進行了矩形、直線繪制,然后通過CGBitmapContextCreateImage:CGConotextRef方法獲取“視圖上下文”的“視圖快照(snapshot)”image_1,最后把這個“視圖快照”更新到屏幕上,從而實現屏幕雙緩沖的技術,效果如下:

  

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产日韩欧美电影在线观看| 午夜精品久久久久久久久久久久久| 国产一区二区剧情av在线| 在线观看视频欧美| 1024成人网色www| 欧美午夜精品久久久久久人妖| 亚洲第一二三四五区| 午夜精品一区二区三区在线视| 欧美高清在线播放| 国产毛片精品国产一区二区三区| 在线日本欧美| 亚洲一区二区三区国产| 亚洲综合国产精品| 久久精品亚洲乱码伦伦中文| 亚洲第一视频网站| 亚洲国产欧美在线人成| 日韩视频专区| 亚洲字幕一区二区| 亚洲一区二区视频在线| 亚洲精品在线观看视频| 欧美日韩免费在线观看| 激情小说亚洲一区| 欧美另类极品videosbest最新版本| 欧美片在线观看| 国产精品一区二区在线观看| 欧美精品日韩综合在线| 欧美精品日韩www.p站| 欧美插天视频在线播放| 在线视频一区二区| 欧美亚洲在线观看| 亚洲看片一区| 欧美成年人视频| 欧美激情视频在线播放| 国产精品久久久久aaaa| 亚洲人成在线观看| 精品盗摄一区二区三区| 在线中文字幕一区| 美女精品视频一区| 欧美精品观看| 中文亚洲欧美| 国产老肥熟一区二区三区| 亚洲视频第一页| 伊人成综合网伊人222| 欧美巨乳在线观看| 欧美三级资源在线| 亚洲直播在线一区| 欧美黄网免费在线观看| 国产精品普通话对白| 午夜视频在线观看一区二区| 国产日产欧美精品| 亚洲欧美日韩综合国产aⅴ| 亚洲精品看片| 在线视频亚洲一区| 欧美91视频| 一区二区亚洲精品| 欧美aaaaaaaa牛牛影院| 久色成人在线| 亚洲国产精品久久久久久女王| 久久精品欧美日韩精品| 久久国产欧美| 亚洲欧美中日韩| 久久一区二区三区四区| 在线亚洲+欧美+日本专区| 宅男在线国产精品| 夜夜嗨av一区二区三区| 嫩草成人www欧美| 国产乱码精品一区二区三| 久久久7777| 亚洲欧美综合一区| 在线播放豆国产99亚洲| 洋洋av久久久久久久一区| 最新高清无码专区| 亚洲欧美中文字幕| 欧美日韩成人| 99re66热这里只有精品3直播| 久久成人精品无人区| 激情一区二区三区| 欧美大香线蕉线伊人久久国产精品| 欧美一区二区三区四区在线观看地址| 欧美~级网站不卡| 亚洲图片欧洲图片av| 欧美mv日韩mv国产网站app| 亚洲特级片在线| 欧美午夜一区二区福利视频| 久久综合给合| 亚洲国产天堂久久综合| 国内精品国语自产拍在线观看| 国产一区二区成人久久免费影院| 亚洲国产成人精品久久| 久久免费的精品国产v∧| 亚洲亚洲精品三区日韩精品在线视频| 亚洲经典在线| 国产视频精品xxxx| 欧美精品18| 亚洲免费视频在线观看| 好吊妞**欧美| 欧美一区二区三区四区夜夜大片| 在线精品国精品国产尤物884a| 久久这里有精品15一区二区三区| 午夜精品视频在线观看一区二区| 久久久久九九九| 欧美aⅴ一区二区三区视频| 国产精品日韩欧美大师| 亚洲一区二区精品在线观看| 久久精品人人做人人爽| 亚洲伦理在线观看| 欧美高清在线一区| 久久久久青草大香线综合精品| 国产精品vip| 99这里只有久久精品视频| 亚洲国产精品久久久久| 国产综合色精品一区二区三区| 国产亚洲精品综合一区91| 午夜精品免费视频| 99精品视频一区二区三区| 国产视频欧美| 亚洲一区欧美二区| 国产欧美日韩综合精品二区| 久久综合久久综合这里只有精品| 久久久久久午夜| 在线观看91久久久久久| 久久精品一区| 午夜精品久久久久久久久久久久| 欧美高清视频一二三区| 欧美啪啪成人vr| 午夜视频在线观看一区二区三区| 日韩一区二区免费高清| 国模私拍视频一区| 免费日韩av| 欧美日韩色一区| 国语自产偷拍精品视频偷| 亚洲国产高清自拍| 亚洲在线观看免费视频| 久久综合亚州| 黑人一区二区三区四区五区| 日韩视频免费在线| 亚洲第一狼人社区| 亚洲国产成人一区| 久久久精品日韩| 另类av导航| 老司机精品久久| 久久av一区二区三区漫画| 国产综合自拍| 亚洲第一天堂无码专区| 国产精品成人一区二区网站软件| 亚洲国产人成综合网站| 亚洲激情成人| 久久精品亚洲精品| 亚洲第一页自拍| 欧美亚洲一区三区| 影音先锋久久久| 亚洲激情不卡| 亚洲精品久久久久中文字幕欢迎你| 在线电影欧美日韩一区二区私密| 亚洲综合电影一区二区三区| 久久美女性网| 99热免费精品在线观看| 欧美福利网址| 一区二区三区日韩精品| 日韩一区二区精品在线观看| 欧美日韩一区二区三| 国产精品欧美精品| 精品69视频一区二区三区| 国产日韩欧美视频在线| 欧美亚洲一区在线| 在线日韩精品视频| 久久国产视频网站| 欧美国产一区在线| 国产精品sm| 国产精品久久久久一区二区三区| 欧美成人亚洲成人| 欧美精品手机在线| 国产美女搞久久| 韩曰欧美视频免费观看| 欧美亚洲成人精品| 国内精品久久久久影院 日本资源| 亚洲综合日韩中文字幕v在线| 亚洲精品久久久蜜桃| 国产一区二区三区免费观看| 久久婷婷色综合| 国产夜色精品一区二区av| 欧美日韩亚洲高清一区二区| 激情视频亚洲| 国产美女精品视频| 欧美日韩不卡在线| 欧美午夜在线一二页| 一二美女精品欧洲| 国产亚洲网站| 欧美综合国产精品久久丁香| 久久亚洲国产精品一区二区| 亚洲桃色在线一区| 亚洲欧美日韩中文播放| 久久天天躁狠狠躁夜夜av| 欧美在线91| 国产一在线精品一区在线观看| 久久电影一区| 亚洲精品欧美专区| 国产日韩av高清| 国产欧美日韩一区| 精品av久久久久电影| 在线不卡中文字幕播放| 毛片精品免费在线观看| 欧美大片在线观看| 欧美韩日一区二区| 欧美在线视频观看| 欧美日韩一区在线观看视频| 国产亚洲欧美中文| 欧美日韩xxxxx| 国产欧美一区二区精品忘忧草| 欧美国产91| 欧美日韩视频在线| 亚洲欧洲在线观看| 亚洲精品一二| 国产精品国产三级国产专区53| 欧美午夜大胆人体| 国产欧美日韩麻豆91| 在线观看欧美日韩国产| 欧美精品播放| 欧美性一二三区| 久久免费高清视频| 久久香蕉国产线看观看网| 国产精品自在欧美一区| 玖玖国产精品视频| 国产精品私拍pans大尺度在线| 日韩视频免费大全中文字幕| 亚洲女优在线| 国产精品腿扒开做爽爽爽挤奶网站| 久久综合色天天久久综合图片| 欧美xx视频| 亚洲毛片网站| 好吊成人免视频| 狠狠色噜噜狠狠狠狠色吗综合| 欧美日韩免费高清一区色橹橹| 欧美日韩高清在线| 亚洲激情六月丁香| 欧美一区二区精美| 午夜精品免费| 日韩午夜免费视频| 亚洲精选一区| 欧美激情视频在线播放| 一区二区三区国产在线| 在线观看日韩www视频免费| 在线亚洲伦理| 国产原创一区二区| 国产精品久久久久久久app| 国产乱人伦精品一区二区| 国产日韩欧美综合在线| 久久综合久久综合久久综合| 亚洲视频电影图片偷拍一区| 亚洲一区在线播放| 亚洲美女电影在线| 亚洲欧美日本国产专区一区| 欧美三级视频在线播放| 国产日韩欧美| 亚洲人午夜精品免费| 国产一区二区三区日韩| 国产精品腿扒开做爽爽爽挤奶网站| 亚洲国产日韩综合一区| 午夜精品一区二区三区在线播放| 欧美四级伦理在线| 日韩一本二本av| 欧美国产综合一区二区| 亚洲欧美国产另类| 欧美日韩一区二区三区在线观看免| 亚洲精品老司机| 老司机免费视频久久| 国产精品区一区二区三| 日韩天堂在线观看| 在线免费一区三区| 国产在线一区二区三区四区| 夜夜嗨一区二区| 欧美一区二区三区久久精品茉莉花| 欧美综合77777色婷婷| 欧美一区二区三区视频| 午夜精品福利在线| 韩日在线一区| 久久香蕉国产线看观看网| 亚洲无限乱码一二三四麻| 久久久精品国产免费观看同学| 久久午夜电影| 亚洲最新在线| 一本一本a久久| 欧美激情第三页| 国内外成人免费视频| 国产精品高潮粉嫩av| 亚洲线精品一区二区三区八戒| 亚洲国产专区| 好男人免费精品视频| 欧美高清视频一区二区三区在线观看| 欧美人与禽猛交乱配视频| 美日韩免费视频| 欧美极品一区二区三区| 欧美搞黄网站| 欧美黄色网络| 亚洲国产黄色| 性18欧美另类| 国产乱码精品一区二区三区忘忧草| 久久久久一区二区| 午夜精品剧场| 国产精品第十页| 亚洲一区二区高清| 国产精品资源| 国产一区二区主播在线| 精品不卡在线| av成人免费在线观看| 亚洲国产精品99久久久久久久久| 亚洲欧洲日本mm| 欧美日韩亚洲91| 欧美激情精品久久久久久| 亚洲国产日韩欧美在线99| 曰本成人黄色| 美女日韩在线中文字幕| 在线不卡欧美| 欧美性事免费在线观看| 久久xxxx精品视频| 国产精品久久国产三级国电话系列| 99国产精品99久久久久久粉嫩| 国产精品久久午夜夜伦鲁鲁| 日韩亚洲国产欧美| 国产日韩欧美一区二区三区四区| 亚洲国产影院| 欧美日韩一视频区二区| 黑丝一区二区三区| 亚洲精品久久久一区二区三区| 美女国内精品自产拍在线播放| 欧美成人三级在线| 欧美日韩18| 欧美日韩一区高清|