openFrameworks•Graphics部分•Of中的图像(graphics)部分允许你绘制显示各类格式图片,线条,几何体如圆、方、路径等等•像素(Pixel)操作可以进行图像的裁切、缩放大小、得到图像有关像素的信息如RGBA、或先关通道信息。•其它的还有例如路径绘制、多边形线段绘制、细分、字体绘制、点阵位图字体绘制等GraphicsofPixelsGraphicsOf中Graphics中所包含的”类”ofCairoRendererofImageofBitmapFontofGraphicsofPixelUtilsofPolyLineofTesselatorofPathofPolyUtilsofRenderCollectionofTrueTypeFont输出为PDF格式ofCairoRendererofRenderCollection在of中想要把你程序中绘制的画面输出为pdf格式非常容易只需要在相关代码段开始位置调用ofBeginSaveScreenAsPDF()及结束位置调用ofEndSaveScreenAsPDF()即可!输出保存为PDF格式voidtestApp::setup(){ofBackground(33,33,33);to_pdf=false;}voidtestApp::draw(){if(to_pdf){ofBeginSaveScreenAsPDF(render.pdf);}ofSetColor(0xFF,0xFF,0xFF);ofCircle(ofGetWidth()*0.5,ofGetHeight()*0.5,10);if(to_pdf){ofEndSaveScreenAsPDF();to_pdf=!to_pdf;}}voidtestApp::keyPressed(intkey){if(key=='p'){to_pdf=!to_pdf;}}classtestApp:publicofBaseApp{public:boolto_pdf;}testApp.htestApp.cppPdf浏览器中查看输出内容图像加载Of允许你加载和绘制各类不同格式的图片,并且进一步进行例如图像的大小缩放、裁切、旋转、保存到文件等其它操作方式通过ofImagemy_img进行图像的创建和绘制loadImage(stringfile)为加载图像方法.在你的testApp::draw(),中调用my_img.draw(0,0)ofPixelsofImageofGraphics图像加载示意voidtestApp::setup(){if(!my_img.loadImage(freakday.png)){ofLog(OF_LOG_ERROR,Errorwhileloadingimage);}}voidtestApp::draw(){my_img.draw(0,0,ofGetWidth(),ofGetHeight());}通过网络加载图像你也可以通过相关的url地址进行图像的加载和显示.通过调用ofImage::loadImage(stringurl)该方法即可这个方法是同步线程操作的,所以要等图片下载完全后才会显示voidtestApp::setup(){if(!my_img.loadImage()){ofLog(OF_LOG_ERROR,Errorwhileloadingimage);}}voidtestApp::draw(){my_img.draw(0,0,ofGetWidth(),ofGetHeight());}像素pixels的改变和操作ofImage和ofPixels具有很多方法能够对图像的像素进行修改和操作.在对相关像素操作完之后不要忘记调用update()方法使之能够正确显示setPixel()你需要调用update()方法在使用了setPixel()之后的话:改变像素pixels通过使用ofImage::setColor(r,g,b,a)方法可以改变图像中红,绿,蓝,透明度的颜色数值,牢记要使用ofImage::update()这个方法在调用完setColor()方法后.取的像素的方法为ofImage::getColor(intx,inty)for(inti=10;i200;++i){for(intj=10;j200;++j){my_img.setColor(i,j,ofColor(255,0,0));}}my_img.update();图像缩放Resizing使用ofImage::resize(intnew_width,intnew_height)进行对图像的缩放if(!my_img.loadImage()){ofLog(OF_LOG_ERROR,Errorwhileloadingimage);}my_img.resize(100,100);图像旋转Rotating使用ofImage::rotate90(inttimes)让图像旋转90°,times表示选装多少次.这个不需要在调用update()方法.my_img.rotate90(0);my_img.rotate90(1);my_img.rotate90(2);my_img.rotate90(3);图像镜像Mirroring使用ofImage::mirror(boolvertical,boolhorizontal)进行图像的镜像绘制my_img.mirror(true,false);my_img.mirror(false,false);my_img.mirror(false,true);my_img.mirror(true,true);图像裁切Cropping使用ofImage::crop(intx,inty,intw,inth)来对相关图像进行裁切操作ints=80;my_img.crop(s,s,my_img.width-s,my_img.height-s);从其它图像中进行裁切Cropfromotherimage使用cropFrom方法可以从其它图像中得到相关像素并把它保存至你当前的图像对象中。.ofImage::cropFrom(ofImage&other,intx,inty,intw,inth)ofImageof_logo;if(!of_logo.loadImage()){ofLog(OF_LOG_ERROR,ErrorwhileloadingOFlogoimage);}else{my_img.cropFrom(of_logo,0,0,of_logo.width,of_logo.height);}保存图像文件至硬盘使用ofImage::saveImage(stringfile)方法来进行图像的保存操作,注意你可以指定保存图片的格式类型.if(!my_img.loadImage()){ofLog(OF_LOG_ERROR,Errorwhileloadingimage);}my_img.resize(100,100);my_img.saveImage(thumb.png);my_img.saveImage(thumb.jpg);my_img.saveImage(thumb.gif);图片注册中心点位置anchorpoints图片的绘制是以该图片的注册点位置进行绘制的.使用ofImage::setAnchorPercent(float,float)或者ofImage::setAnchorPoint(int,int)my_img.loadImage(freakday.png);my_img.resize(100,100);my_img.setAnchorPercent(0.5,0.5);my_img.draw(ofGetWidth()*0.5,ofGetHeight()*0.5);my_img.setAnchorPercent(1,1);ofImage概括总结ofImage(conststring&filename)ofImage(constofPixels_PixelType&pix)ofImage(constofFile&file)voidallocate(intw,inth,ofImageTypetype)voidclear()voidsetUseTexture(booluse)boolisUsingTexture()ofTexture&getTextureReference()voidbind()voidunbind()Constructors有关纹理Texture操作boolloadImage(stringfilename)boolloadImage(constofBuffer&buffer)boolloadImage(constofFile&file)图像加载方法voidsaveImage(stringfilename,ofImageQualityTypecomp=OF_IMAGE_QUALITY_BEST)voidsaveImage(ofBuffer&buffer,ofImageQualityTypecomp=OF_IMAGE_QUALITY_BEST)voidsaveImage(constofFile&file,ofImageQualityTypecomp=OF_IMAGE_QUALITY_BEST)图像保存方法ofImage概括总结ofImage概括总结voidsetCompression(ofTexCompressioncompression)纹理压缩操作TexturecompressionofColor_PixelTypegetColor(intx,inty)PixelType*getPixels()ofPixels_PixelType&getPixelsRef()得到相关像素Getpixels常见图像操作方法voidsetColor(intx,inty,ofColor_PixelTypecolor)voidsetFromPixels(constPixelType*pixels,intw,inth,ofImageTypetype,boolisOrderRGB=true)voidsetFromPixels(constofPixels_PixelType&pixels)voidsetImageType(ofImageTypetype)voidresize(intw,inth)voidgrabScreen(intx,inty,intw,inth)voidcrop(intx,inty,intw,inth)voidcropFrom(ofImage_PixelType&otherImage,intx,inty,intw,inth)voidrotate90(introtation)voidmirror(boolvertical,boolhorizontal)ofImage概括总结图片注册点AnchorpointsvoidsetAnchorPercent(floatxPct,floatyPct)voidsetAnchorPoint(floatx,floaty)voidresetAnchor()ofImage概括总结常用GeneralboolisAllocated()voidreloadTexture()floatgetWidth()floatgetHeight()图像质量ImagequalityofImage概括总结OF_IMAGE_QUALITY_BESTOF_IMAGE_QUAL