版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、openFrameworks Graphics部分 Of中的图像(graphics)部分允许你绘制显示各类格式图 片,线条,几何体如圆、方、路径等等 像素(Pixel)操作可以进行图像的裁切、缩放大小、得到 图像有关像素的信息如RGBA、或先关通道信息。 其它的还有例如路径绘制、多边形线段绘制、细分、字 体绘制、点阵位图字体绘制等 Graphics ofPixels Graphics Of中Graphics中所包含的”类” ofCairoRenderer ofImage ofBitmapFont ofGraphics ofPixelUtils ofPolyLine ofTesselator o
2、fPath ofPolyUtils ofRenderCollection ofTrueTypeFont 输出为PDF格式 ofCairoRendererofRenderCollection 在of中想要把你程序中绘制的画面输出为pdf格式非常容 易 只需要在相关代码段开始位置调用 ofBeginSaveScreenAsPDF() 及结束位置调用 ofEndSaveScreenAsPDF() 即可! 输出保存为PDF格式 void testApp:setup() ofBackground(33,33,33); to_pdf = false; void testApp:draw() if(to_p
3、df) ofBeginSaveScreenAsPDF(render.pdf); ofSetColor(0 xFF, 0 xFF, 0 xFF); ofCircle(ofGetWidth()*0.5,ofGetHeight()*0.5,10); if(to_pdf) ofEndSaveScreenAsPDF(); to_pdf = !to_pdf; void testApp:keyPressed(int key) if(key = p) to_pdf = !to_pdf; class testApp : public ofBaseApp public: bool to_pdf; testApp.
4、htestApp.cpp Pdf浏览器中查看输出内容 图像加载 Of允许你加载和绘制各类不同格式的图片,并且进一步进 行例如图像的大小缩放、裁切、旋转、保存到文件等其它 操作方式 通过 ofImage my_img 进行图像的创建和绘制 loadImage(string file) 为加载图像方法. 在你的 testApp:draw(), 中调用 my_img.draw(0,0) ofPixelsofImage ofGraphics 图像加载示意 void testApp:setup() if(!my_img.loadImage(freakday.png) ofLog(OF_LOG_ERROR
5、, Error while loading image); void testApp:draw() my_img.draw(0,0,ofGetWidth(), ofGetHeight(); 通过网络加载图像 你也可以通过相关的url地址进行图像的加载和显示. 通过 调用 ofImage:loadImage(string url) 该方法即可 这个方法是同步线程操作的,所以要等图片下载完全后才 会显示 void testApp:setup() if(!my_img.loadImage(http:/ ofLog(OF_LOG_ERROR, Error while loading image); v
6、oid testApp:draw() my_img.draw(0,0, ofGetWidth(), ofGetHeight(); 像素pixels的改变和操作 ofImage 和 ofPixels 具有很多方法能够对图像的像素进 行修改和操作. 在对相关像素操作完之后不要忘记调用 update() 方法使之能够正确显示 setPixel() 你需要调用update() 方法在使用了setPixel()之后的话: 改变像素 pixels 通过使用 ofImage:setColor(r,g,b,a) 方法可以改变图 像中红,绿,蓝,透明度的颜色数值,牢记要使用 ofImage:update() 这
7、个方法在调用完setColor()方法后. 取的像素的方法为 ofImage:getColor(int x, int y) for(int i = 10; i 200; +i) for(int j = 10; j 200; +j) my_img.setColor(i,j,ofColor(255,0,0); my_img.update(); 图像缩放Resizing 使用 ofImage:resize(int new_width, int new_height) 进行对图像的缩放 if(!my_img.loadImage(http:/ ofLog(OF_LOG_ERROR, Error whil
8、e loading image); my_img.resize(100,100); 图像旋转Rotating 使用 ofImage:rotate90(int times) 让图像旋转90, times 表示选装多少次. 这个不需要在调用update()方法. my_img.rotate90(0);my_img.rotate90(1);my_img.rotate90(2);my_img.rotate90(3); 图像镜像Mirroring 使用 ofImage:mirror(bool vertical, bool horizontal) 进行图像的镜像绘制 my_img.mirror(true,
9、false);my_img.mirror(false,false); my_img.mirror(false,true);my_img.mirror(true,true); 图像裁切Cropping 使用 ofImage:crop(int x, int y, int w, int h) 来对 相关图像进行裁切操作 int s = 80; my_img.crop(s,s,my_img.width - s, my_img.height - s); 从其它图像中进行裁切Crop from other image 使用 cropFrom 方法可以从其它图像中得到相关像素并 把它保存至你当前的图像对象中
10、。. ofImage:cropFrom(ofImage if(!of_logo.loadImage(http:/www.openframeworks.cc/wp-content/themes/ofw/images/ofw-logo.gif) ofLog(OF_LOG_ERROR, Error while loading OF logo image); else my_img.cropFrom(of_logo,0,0,of_logo.width,of_logo.height); 保存图像文件至硬盘 使用 ofImage:saveImage(string file) 方法来进行图像 的保存操作,注
11、意你可以指定保存图片的格式类型. if(!my_img.loadImage(http:/ ofLog(OF_LOG_ERROR, Error while loading image); my_img.resize(100,100); my_img.saveImage(thumb.png); my_img.saveImage(thumb.jpg); my_img.saveImage(thumb.gif); 图片注册中心点位置 anchor points 图片的绘制是以该图片的注册点位置进行绘制的. 使用 ofImage:setAnchorPercent(float,float) 或者 ofIma
12、ge: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(const string ofNoFill(); ofTriangle(60,30, 200,200, 60,200); ofCircle(170, 120, 30
13、);ofNoFill(); ofSetCircleResolution(5); ofCircle(170, 120, 30); ofSetCircleResolution(50); ofFill(); ofCircle(30, 35, 25); ofCircle(170, 120, 30); ofSetCircleResolution(5); ofNoFill(); ofCircle(70, 35, 25); ofCircle(130, 120, 30); 当你使用这些方法时ofFill, ofNoFill, ofSetCircleResolution 它们通常被称之为“状态声明”. 这 些声
14、明只要你调用的话就会被使用. 因此当你调用ofNoFill 方法时所有 在这之后绘制的物件都不会在被填 充上颜色 重置声明Reset state ofEllipse(160,120,100,50); ofEllipse(160,120,50,100); ofSetCircleResolution(6); ofEllipse(160,120,50,100); ofNoFill(); ofEllipse(160,120,50,100); ofLine(10,120,310,100); ofSetLineWidth(5); ofLine(10,120,310,100); ofVec2f a(10,1
15、20); ofVec2f b(310,100); ofLine(a,b); ofRect(40,50,230,130); ofSetLineWidth(5); ofNoFill(); ofCurve( 10,10 ,55,15 ,15,210 ,100,200 ); ofSetLineWidth(3); ofNoFill(); ofBezier( 10,10 ,55,15 ,15,210 ,100,200 ); 贝塞尔曲线和曲线Beziers and curves ofBeginShape(); ofVertex(140,40); ofVertex(130,40); ofVertex(100,
16、100); ofVertex(110,100); ofEndShape(); ofBeginShape(); for(float i = 0; i 30; +i) float r = sin(i/30 * PI) * 70; float x = 180 + cos(i/30)*TWO_PI) * r; float y = 120 + sin(i/30)*TWO_PI) * r; ofVertex(x,y); ofEndShape(); 自定义类型物件绘制Custom shapes ofBeginShape(); for(float i = 0; i TWO_PI; i+= 0.01*HALF_PI*0.5) float r = (2 - 2*sin(i) + sin(i)*sqrt(abs(cos(i) / (sin(i)+1.4) * -40; float x = 180 + cos(i)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年飞行服务站飞行数据统计分析报告编制
- 2026年重点场所多语种标识行李寄存境外旅客引导服务台设置规范
- 2026年深海冷泉热液生态系统微生物多样性调查指南
- 2026年海洋糖库酶库天然产物三维结构数据库共建共享
- 2026年首架航空器生产试飞特许飞行证申请流程
- 2026广东河源市消防救援支队第一批政府专职消防员招聘127人备考题库含完整答案详解【必刷】
- 2026浙江宁波逸东诺富特酒店招聘1人备考题库附答案详解【黄金题型】
- 2026年田块整治灌溉排水田间道路农田防护输配电标准应用实务
- 2026云南玉溪易门县教育体育局招聘后勤辅助人员10人备考题库带答案详解ab卷
- 2026年大模型私有化访问控制权限管理安全策略
- 家长安全培训内容文案课件
- 肿瘤学课件教学
- 高级程序设计题库及答案
- 2026年2月1日执行的《行政执法监督条例》解读课件
- 天天刷牙课件
- 2026年高考数学复习难题速递之圆锥曲线综合(2025年11月)
- 2025年《城市居民委员会组织法》知识考试题库及答案解析
- 自闭症专业毕业论文
- 小儿颈外静脉采血课件
- 2025四川绵阳涪城区下半年考核招聘医疗卫生专业技术人员24人考试笔试模拟试题及答案解析
- 2026年江苏卫生健康职业学院单招职业适应性测试题库附答案
评论
0/150
提交评论