如何使⽤C语⾔填充封闭图形?

2024-06-14 22:28
文章标签 图形 填充 封闭

本文主要是介绍如何使⽤C语⾔填充封闭图形?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、问题

        如要对封闭图形(如两个区域的交集)进⾏填充,那么怎么实现呢?

二、解答

        填充就是⽤指定的颜⾊和图案填满⼀个封闭图形。

        TC 提供了⼀个可对任意封闭图形填充的函数,即 floodfill( ) 。其调⽤格式如下:

void far floodfill(int x, int y, int border);

        其中,x,y 为封闭图形内的任意⼀点: border 为边界的颜⾊,也就是封闭图形轮廓的颜⾊。

        调⽤了该函数后,将⽤指定的颜⾊和图案填满整个封闭图形。

注意:

(1)如果x或y取在边界上,则不进⾏填充。

(2)如果不是封闭图形,则填充会从没有封闭的地⽅溢出去,填满其他地⽅。

(3)如果x或y在图形外⾯,则填充封闭图形外的屏幕区域。

(4)由 border 指定的颜⾊值必须与图形轮廓的颜⾊值相同,但填充⾊可选任意颜⾊。

(5)填充颜⾊和图案由 setfillstyle( ) 函数决定。

        下⾯举例说明 floodfill( ) 函数的⽤法。先画⼀个五角星边界线,形成中⼼1个填充区和外围5个填充区,然后再填充这6个区域。代码如下:

#include <stdio.h>
#include <graphics.h>
#include <math.h>
#define PI 3.1415926
int main()
{int driver = DETECT, mode;int i, maxx, maxy;int point[12];initgraph(&driver, &mode, "");maxx = getmaxx();maxy = getmaxy();setcolor(YELLOW);setfillstyle(SOLID FILL, YELLOW);for (i = 0; i < 5; t++){point[2 * i] = sin((180 + 144 * 1) / 180.0 * PI) * 100 + maxx / 2;point[2 * i + 1] = cos((180 + 144 * i) / 180.0 * PI) * 100 + maxy / 2;}point[10] = point[O];point[11] = point[1];drawpoly(6, point);floodfill(maxx / 2, maxy / 2, YELLOW);for (i = 0; i < 5; i++){floodfill(sin((180 + 144 * i) / 180.0 * PI) * 50 + maxx / 2,cos((180 + 144 * i) / 180.0 * PI) * 50 + maxy / 2, YELLOW);}getch();closegraph();
}

三、总结

        filflood( ) 函数能够实现对封闭图形进⾏填充的功能。

这篇关于如何使⽤C语⾔填充封闭图形?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1061664

相关文章

Android SurfaceFlinger——图形内存分配器(十一)

前面的文章中的图层合成器(HWC),这里我们接着看一下 SurfaceFlinger 中的另一个重要服务——图形内存分配器。 一、简介         android.hardware.graphics.allocator@2.0 是 Android 系统中硬件抽象层(HAL)的一个组件,专门用于图形内存的分配和管理。它是 SurfaceFlinger 在处理图形数据时所依赖的

图形编辑器基于Paper.js教程03:认识Paper.js中的所有类

先来认一下Paper的资源对象,小弟有哪些,有个整体的认识。认个脸。 在Paper.js的 官方文档中类大致有如下这些: 基类: ProjectViewItemPointToolSizeSegmentRectangleCurveCurveLocationMatrixColorStyleTweenToolEventGradientGradientStopEvent 二级或三级类 继承Ite

内存填充越界 + malloc空间不够导致越界

【创建时间:2014-11-1 11:50】 [2014-10-31]:环境:系统:Linux版本:3.08    平台:Hisi3516c。 内存填充越界: 问题: 申请了一个2048字节局部静态的变量存储一个固定RGB值,方便后续画框、线时快速copy。但是在第一次赋固定值时,越界了,导致内核自动向应用程序 发送信号 SIGBUS(7)给应用程序,导致应用程序异常

使用AGG里面的clip_box函数裁剪画布, 绘制裁剪后的图形

// 矩形裁剪图片, 透明void agg_testImageClipbox_rgba32(unsigned char* buffer, unsigned int width, unsigned int height){// ========= 创建渲染缓冲区 =========agg::rendering_buffer rbuf;// BMP是上下倒置的,为了和GDI习惯相同,最后一个参数是

excel表格自动填充为汉字拼音首字母

更改自:https://jingyan.baidu.com/article/75ab0bcb26da9f96874db22d.html 环境说明 microsoft excel 2016 操作步骤 1、打开【Excel表格】,选中sheet表,右键-》查看代码;或者按组合快捷键【Alt+F11】,打开【Visual Basic编辑器】: 2、点击上面菜单栏的【插入】选项,然后选择【模

directfb嵌入式图形界简介

 引 言   DirectFB是一个提供硬件图形加速、输入设备处理抽象并集成了透明功能窗体系统和多显示层处理的开源库。通过对底层硬件不支持的图形操作以回调函数实现,DirectFB实现硬件设备的完全抽象。另外DirectFB在设计之初就充分考虑嵌入式系统的固有特性,体积小巧,资源消耗低。作为嵌入式系统中强大的图形处理库,DirectFB成为Linux下图形处理的一个新的标准(CELF A

tessy 单元测试 TDE 界面 数据无法填充:the test object interface is incomplete

目录 1,失败现象 2,失败原因 3,解决办法 1,失败现象         函数名字前的图标高度缩小为正常的一半,TDE界面的数据无法填充。错误提示为题目中的英文。 2,失败原因         TIE界面,此函数的参数的 passing 方向有 unknown,未正确识别。 3,解决办法         将 interface 栏的所有参数的 passing 和

8.12 矢量图层面要素单一符号使用五(栅格数据填充)

文章目录 前言栅格数据填充(Raster image fill)QGis设置面符号为栅格数据填充(Raster image fill)二次开发代码实现栅格数据填充(Raster image fill) 总结 前言 本章介绍矢量图层线要素单一符号中使用栅格数据填充(Raster image fill)的使用说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps 栅

VC++学习(5)——文本编程,插入符的初始化,图形插入符;文字始终在窗口;字符输入功能,回车换行,删除,左键定位;字体修改,字体平滑变色

目录 引出第五讲 文本编程新建项目输入线的初始化根据字体大小定义插入符大小创建图形插入符文字始终保存在窗口中CString类通过字符串资源 路径层字符输入的功能键盘输入消息鼠标左键消息保存点击位置的坐标 输入回车键的处理删除文字的实现 字符输入功能代码字体的修改模拟卡拉ok变色字体 总结第四讲 简单绘图加入点击弹窗 划线的实现1划线实现2划线的实现3,CClientGetParent()

探索数据结构:集合、线性结构、树状结构和图形结构

在计算机科学中,数据结构是用于组织和存储数据的基础。不同的数据结构有不同的特点和适用场景。今天,我们将深入探讨四种主要的数据结构:集合、线性结构、树状结构和图形结构。通过对它们的理解,您可以更好地选择和应用这些结构来解决实际问题。 集合(Set) 定义与特点 集合是一组互不相同的元素的无序集合。与其他数据结构不同,集合中的元素没有特定的顺序,并且每个元素都是唯一的。这意味着在集合中不存