iOS 用C语言实现画矩形
来源:互联网 发布:智能交通 数据挖掘 编辑:程序博客网 时间:2024/04/29 14:00
函数声明:
#include <stdio.h>
// bool数据类型是C99标准新增的, 要使用bool类型需要导入<stdbool.h>头文件
#include <stdbool.h>
typedef struct point {
int x;
int y;
} LOPoint;
typedef struct size {
int width;
int height;
} LOSize;
typedef struct rect {
LOPoint origin;
LOSize size;
} LORect;
LOPoint LOPointMake(int x, int y);
LOPoint LOPointZero();
void printPointInfo(LOPoint pt);
LOSize LOSizeMake(int width, int height);
LOSize LOSizeZero();
void printSizeInfo(LOSize sz);
LORect LORectZero();
LORect LORectMake(int x, int y, int width, int height);
void printRectInfo(LORect rc);
int LORectGetMinX(LORect rect);
int LORectGetMaxX(LORect rect);
int LORectGetMinY(LORect rect);
int LORectGetMaxY(LORect rect);
LOPoint center(LORect rect);
bool LOPointEqualToPoint(LOPoint pt1, LOPoint pt2);
bool LOSizeEqualToSize(LOSize sz1, LOSize sz2);
bool LORectEqualToRect(LORect rect1, LORect rect2);
bool LORectContainsPoint(LORect rect, LOPoint pt);
bool LORectContainsRect(LORect rect1, LORect rect2);
bool LORectIsEmpty(LORect rect);
LORect LORectIntersection(LORect rect1, LORect rect2);
bool LORectIntersectsRect(LORect rect1, LORect rect2);
LORect LORectOffset(LORect rect, int dx, int dy);
LORect LORectInset(LORect rect, int dx, int dy);
void drawRect(LORect rect);
void drawEmptyRect(LORect rect);
// bool数据类型是C99标准新增的, 要使用bool类型需要导入<stdbool.h>头文件
#include <stdbool.h>
typedef struct point {
int x;
int y;
} LOPoint;
typedef struct size {
int width;
int height;
} LOSize;
typedef struct rect {
LOPoint origin;
LOSize size;
} LORect;
LOPoint LOPointMake(int x, int y);
LOPoint LOPointZero();
void printPointInfo(LOPoint pt);
LOSize LOSizeMake(int width, int height);
LOSize LOSizeZero();
void printSizeInfo(LOSize sz);
LORect LORectZero();
LORect LORectMake(int x, int y, int width, int height);
void printRectInfo(LORect rc);
int LORectGetMinX(LORect rect);
int LORectGetMaxX(LORect rect);
int LORectGetMinY(LORect rect);
int LORectGetMaxY(LORect rect);
LOPoint center(LORect rect);
bool LOPointEqualToPoint(LOPoint pt1, LOPoint pt2);
bool LOSizeEqualToSize(LOSize sz1, LOSize sz2);
bool LORectEqualToRect(LORect rect1, LORect rect2);
bool LORectContainsPoint(LORect rect, LOPoint pt);
bool LORectContainsRect(LORect rect1, LORect rect2);
bool LORectIsEmpty(LORect rect);
LORect LORectIntersection(LORect rect1, LORect rect2);
bool LORectIntersectsRect(LORect rect1, LORect rect2);
LORect LORectOffset(LORect rect, int dx, int dy);
LORect LORectInset(LORect rect, int dx, int dy);
void drawRect(LORect rect);
void drawEmptyRect(LORect rect);
函数定义:
#include "rect.h"
#include <stdlib.h>
LOPoint LOPointMake(int x, int y){
LOPoint pt;
pt.x = x;
pt.y = y;
return pt;
}
LOPoint LOPointZero(){
LOPoint pt;
pt.x = 0;
pt.y = 0;
return pt;
}
void printPointInfo(LOPoint pt){
printf("{%d, %d}\n", pt.x, pt.y);
}
LOSize LOSizeMake(int width, int height){
LOSize sz;
sz.width = width;
sz.height = height;
return sz;
}
LOSize LOSizeZero(){
LOSize sz;
sz.width = 0;
sz.height = 0;
return sz;
}
void printSizeInfo(LOSize sz){
printf("{%d, %d}\n", sz.width, sz.height);
}
LORect LORectZero(){
LORect rc;
rc.origin.x = 0;
rc.origin.y = 0;
rc.size.width = 0;
rc.size.height = 0;
return rc;
}
LORect LORectMake(int x, int y, int width, int height){
LORect rc;
rc.origin.x = x;
rc.origin.y = y;
rc.size.width = width;
rc.size.height = height;
return rc;
}
void printRectInfo(LORect rc){
printf("{{%d, %d}, {%d, %d}}\n", rc.origin.x, rc.origin.y, rc.size.width, rc.size.height);
}
int LORectGetMinX(LORect rect){
int LORectMinX = rect.origin.x;
return LORectMinX;
}
int LORectGetMaxX(LORect rect){
int LORectMaxX = rect.origin.x + rect.size.width;
return LORectMaxX;
}
int LORectGetMinY(LORect rect){
int LORectMinY = rect.origin.y;
return LORectMinY;
}
int LORectGetMaxY(LORect rect){
int LORectMaxY = rect.origin.y + rect.size.height;
return LORectMaxY;
}
LOPoint center(LORect rect){
LOPoint Center;
Center.x = rect.origin.x + rect.size.width / 2;
Center.y = rect.origin.y + rect.size.height / 2;
return Center;
}
bool LOPointEqualToPoint(LOPoint pt1, LOPoint pt2){
if (pt1.x == pt2.x && pt1.y == pt2.y) {
return 1;// 表示点相同
}else{
return 0;
}
}
bool LOSizeEqualToSize(LOSize sz1, LOSize sz2){
if (sz1.height == sz2.height && sz1.width == sz2.width) {
return 1;// 表示面积相同
}else{
return 0;
}
#include <stdlib.h>
LOPoint LOPointMake(int x, int y){
LOPoint pt;
pt.x = x;
pt.y = y;
return pt;
}
LOPoint LOPointZero(){
LOPoint pt;
pt.x = 0;
pt.y = 0;
return pt;
}
void printPointInfo(LOPoint pt){
printf("{%d, %d}\n", pt.x, pt.y);
}
LOSize LOSizeMake(int width, int height){
LOSize sz;
sz.width = width;
sz.height = height;
return sz;
}
LOSize LOSizeZero(){
LOSize sz;
sz.width = 0;
sz.height = 0;
return sz;
}
void printSizeInfo(LOSize sz){
printf("{%d, %d}\n", sz.width, sz.height);
}
LORect LORectZero(){
LORect rc;
rc.origin.x = 0;
rc.origin.y = 0;
rc.size.width = 0;
rc.size.height = 0;
return rc;
}
LORect LORectMake(int x, int y, int width, int height){
LORect rc;
rc.origin.x = x;
rc.origin.y = y;
rc.size.width = width;
rc.size.height = height;
return rc;
}
void printRectInfo(LORect rc){
printf("{{%d, %d}, {%d, %d}}\n", rc.origin.x, rc.origin.y, rc.size.width, rc.size.height);
}
int LORectGetMinX(LORect rect){
int LORectMinX = rect.origin.x;
return LORectMinX;
}
int LORectGetMaxX(LORect rect){
int LORectMaxX = rect.origin.x + rect.size.width;
return LORectMaxX;
}
int LORectGetMinY(LORect rect){
int LORectMinY = rect.origin.y;
return LORectMinY;
}
int LORectGetMaxY(LORect rect){
int LORectMaxY = rect.origin.y + rect.size.height;
return LORectMaxY;
}
LOPoint center(LORect rect){
LOPoint Center;
Center.x = rect.origin.x + rect.size.width / 2;
Center.y = rect.origin.y + rect.size.height / 2;
return Center;
}
bool LOPointEqualToPoint(LOPoint pt1, LOPoint pt2){
if (pt1.x == pt2.x && pt1.y == pt2.y) {
return 1;// 表示点相同
}else{
return 0;
}
}
bool LOSizeEqualToSize(LOSize sz1, LOSize sz2){
if (sz1.height == sz2.height && sz1.width == sz2.width) {
return 1;// 表示面积相同
}else{
return 0;
}
}
bool LORectEqualToRect(LORect rect1, LORect rect2){
if ((LOPointEqualToPoint(rect1.origin, rect2.origin)) && (LOSizeEqualToSize(rect1.size, rect2.size))) {
return 1;// 表示是同一个矩形
}else{
return 0;
}
}
bool LORectContainsPoint(LORect rect, LOPoint pt){
if (pt.x >= rect.origin.x && pt.y >= rect.origin.y && pt.x <= rect.origin.x + rect.size.width && pt.y <= rect.origin.y + rect.size.height) {
return 1;//包含点
}else{
return 0;
}
}
bool LORectContainsRect(LORect rect1, LORect rect2){
if (LORectGetMaxX(rect1) >= LORectGetMaxX(rect2) && LORectGetMaxY(rect1) >= LORectGetMaxY(rect2) && LORectGetMinX(rect1) <= LORectGetMinX(rect2) && LORectGetMinY(rect1) <= LORectGetMinY(rect2)) {
return 1;//rect1 包含 rect2
}else{
return 0;
}
}
bool LORectIsEmpty(LORect rect){
if (rect.size.height == 0 || rect.size.width == 0) {
return 1;// 面积为0
}else{
return 0;
}
}
LORect LORectIntersection(LORect rect1, LORect rect2){
LORect rect;
rect.origin.x = rect1.origin.x > rect2.origin.x ? rect1.origin.x : rect2.origin.x;
rect.origin.y = rect1.origin.y > rect2.origin.y ? rect1.origin.y : rect2.origin.y;
rect.size.width = ((rect1.origin.x + rect1.size.width) < (rect2.origin.x + rect2.size.width) ? (rect1.origin.x + rect1.size.width) : (rect2.origin.x + rect2.size.width)) - rect.origin.x;
rect.size.height = ((rect1.origin.y + rect1.size.height) < (rect2.origin.y + rect2.size.height) ? (rect1.origin.y + rect1.size.height) : (rect2.origin.y + rect2.size.height)) - rect.origin.y;
// if ((rect.origin.x + rect.size.width) > rect.origin.x && (rect.origin.y + rect.size.height) > rect.origin.y) {
return rect;
// }else {
// return LORectZero();
// }
}
bool LORectIntersectsRect(LORect rect1, LORect rect2){
LORect rect;
rect.origin.x = rect1.origin.x > rect2.origin.x ? rect1.origin.x : rect2.origin.x;
rect.origin.y = rect1.origin.y > rect2.origin.y ? rect1.origin.y : rect2.origin.y;
rect.size.width = ((rect1.origin.x + rect1.size.width) < (rect2.origin.x + rect2.size.width) ? (rect1.origin.x + rect1.size.width) : (rect2.origin.x + rect2.size.width)) - rect.origin.x;
rect.size.height = ((rect1.origin.y + rect1.size.height) < (rect2.origin.y + rect2.size.height) ? (rect1.origin.y + rect1.size.height) : (rect2.origin.y + rect2.size.height)) - rect.origin.y;
if (rect.size.width == 0 || rect.size.height == 0) {
return 0;// 不碰撞
}else{
return 1;//碰撞
}
}
LORect LORectOffset(LORect rect, int dx, int dy){
LORect rcos;
rcos.origin.x = rect.origin.x + dx;
rcos.origin.y = rect.origin.y + dy;
rcos.size.height = rect.size.height;
rcos.size.width = rect.size.width;
return rcos;
}
LORect LORectInset(LORect rect, int dx, int dy){
LORect rcls;
rcls.origin.x = rect.origin.x + dx;
rcls.origin.y = rect.origin.y + dy;
rcls.size.width = rect.size.width + 2 * abs(dx);
rcls.size.height = rect.size.height + 2 * abs(dy);
return rcls;
}
void drawRect(LORect rect){
for (int i = 0; i < LORectGetMinY(rect); i++) {
printf("\n");
}
int k = LORectGetMinY(rect);
while (k < LORectGetMaxY(rect)) {
for (int i = 0; i < LORectGetMinX(rect); i++) {
printf(" ");
}
for (int j = LORectGetMinX(rect); j < LORectGetMaxX(rect); j++) {
printf("*");
}
printf("\n");
k++;
}
}
void drawEmptyRect(LORect rect){
for (int i = 0; i < LORectGetMinY(rect); i++) {
printf("\n");
}
int k = LORectGetMinY(rect);
while (k < LORectGetMaxY(rect)) {
for (int i = 0; i < LORectGetMinX(rect); i++) {
printf(" ");
}
if ((k == LORectGetMaxY(rect) - 1) || k == LORectGetMinY(rect)) {
for (int j = LORectGetMinX(rect); j < LORectGetMaxX(rect); j++) {
printf("*");
}
}
else{
for (int j = LORectGetMinX(rect); j < LORectGetMaxX(rect); j++) {
if (j == LORectGetMinX(rect) || j == (LORectGetMaxX(rect) - 1)) {
printf("*");
}else{
printf(" ");
}
}
}
printf("\n");
k++;
}
}
if ((LOPointEqualToPoint(rect1.origin, rect2.origin)) && (LOSizeEqualToSize(rect1.size, rect2.size))) {
return 1;// 表示是同一个矩形
}else{
return 0;
}
}
bool LORectContainsPoint(LORect rect, LOPoint pt){
if (pt.x >= rect.origin.x && pt.y >= rect.origin.y && pt.x <= rect.origin.x + rect.size.width && pt.y <= rect.origin.y + rect.size.height) {
return 1;//包含点
}else{
return 0;
}
}
bool LORectContainsRect(LORect rect1, LORect rect2){
if (LORectGetMaxX(rect1) >= LORectGetMaxX(rect2) && LORectGetMaxY(rect1) >= LORectGetMaxY(rect2) && LORectGetMinX(rect1) <= LORectGetMinX(rect2) && LORectGetMinY(rect1) <= LORectGetMinY(rect2)) {
return 1;//rect1 包含 rect2
}else{
return 0;
}
}
bool LORectIsEmpty(LORect rect){
if (rect.size.height == 0 || rect.size.width == 0) {
return 1;// 面积为0
}else{
return 0;
}
}
LORect LORectIntersection(LORect rect1, LORect rect2){
LORect rect;
rect.origin.x = rect1.origin.x > rect2.origin.x ? rect1.origin.x : rect2.origin.x;
rect.origin.y = rect1.origin.y > rect2.origin.y ? rect1.origin.y : rect2.origin.y;
rect.size.width = ((rect1.origin.x + rect1.size.width) < (rect2.origin.x + rect2.size.width) ? (rect1.origin.x + rect1.size.width) : (rect2.origin.x + rect2.size.width)) - rect.origin.x;
rect.size.height = ((rect1.origin.y + rect1.size.height) < (rect2.origin.y + rect2.size.height) ? (rect1.origin.y + rect1.size.height) : (rect2.origin.y + rect2.size.height)) - rect.origin.y;
// if ((rect.origin.x + rect.size.width) > rect.origin.x && (rect.origin.y + rect.size.height) > rect.origin.y) {
return rect;
// }else {
// return LORectZero();
// }
}
bool LORectIntersectsRect(LORect rect1, LORect rect2){
LORect rect;
rect.origin.x = rect1.origin.x > rect2.origin.x ? rect1.origin.x : rect2.origin.x;
rect.origin.y = rect1.origin.y > rect2.origin.y ? rect1.origin.y : rect2.origin.y;
rect.size.width = ((rect1.origin.x + rect1.size.width) < (rect2.origin.x + rect2.size.width) ? (rect1.origin.x + rect1.size.width) : (rect2.origin.x + rect2.size.width)) - rect.origin.x;
rect.size.height = ((rect1.origin.y + rect1.size.height) < (rect2.origin.y + rect2.size.height) ? (rect1.origin.y + rect1.size.height) : (rect2.origin.y + rect2.size.height)) - rect.origin.y;
if (rect.size.width == 0 || rect.size.height == 0) {
return 0;// 不碰撞
}else{
return 1;//碰撞
}
}
LORect LORectOffset(LORect rect, int dx, int dy){
LORect rcos;
rcos.origin.x = rect.origin.x + dx;
rcos.origin.y = rect.origin.y + dy;
rcos.size.height = rect.size.height;
rcos.size.width = rect.size.width;
return rcos;
}
LORect LORectInset(LORect rect, int dx, int dy){
LORect rcls;
rcls.origin.x = rect.origin.x + dx;
rcls.origin.y = rect.origin.y + dy;
rcls.size.width = rect.size.width + 2 * abs(dx);
rcls.size.height = rect.size.height + 2 * abs(dy);
return rcls;
}
void drawRect(LORect rect){
for (int i = 0; i < LORectGetMinY(rect); i++) {
printf("\n");
}
int k = LORectGetMinY(rect);
while (k < LORectGetMaxY(rect)) {
for (int i = 0; i < LORectGetMinX(rect); i++) {
printf(" ");
}
for (int j = LORectGetMinX(rect); j < LORectGetMaxX(rect); j++) {
printf("*");
}
printf("\n");
k++;
}
}
void drawEmptyRect(LORect rect){
for (int i = 0; i < LORectGetMinY(rect); i++) {
printf("\n");
}
int k = LORectGetMinY(rect);
while (k < LORectGetMaxY(rect)) {
for (int i = 0; i < LORectGetMinX(rect); i++) {
printf(" ");
}
if ((k == LORectGetMaxY(rect) - 1) || k == LORectGetMinY(rect)) {
for (int j = LORectGetMinX(rect); j < LORectGetMaxX(rect); j++) {
printf("*");
}
}
else{
for (int j = LORectGetMinX(rect); j < LORectGetMaxX(rect); j++) {
if (j == LORectGetMinX(rect) || j == (LORectGetMaxX(rect) - 1)) {
printf("*");
}else{
printf(" ");
}
}
}
printf("\n");
k++;
}
}
0 0
- iOS 用C语言实现画矩形
- 用C语言实现画矩形
- 用C语言实现画矩形
- 求直方图中最大矩形面积(C语言实现)
- C语言_同心矩形
- (C语言)用'*'输出指定行数的矩形
- iOS Quartz2D - 画矩形
- CSP考试 2013年12月第3题 最大矩形 C语言实现
- C语言 判断两个矩形是否相交
- YTU:C语言习题 矩形法求定积分
- C语言 两个矩形的合并
- CBrush实现画矩形
- 矩形类简单实现(c++)
- c#PictureBox画直线 矩形
- 绘制在某个矩形区域内字符串自动多行换行的一个方法(c)语言实现
- 用C语言实现有限状态机
- 用C语言实现有限状态机
- 用C语言实现哈夫曼树
- java杂谈,顺便谈谈《thinking in java》
- 解决警告“ld: warning: directory not found for option”
- Milano Store OpenCart 2.0 主题模板 ABC-0473
- 【Java并发编程】之十八:第五篇中volatile意外问题的正确分析解答(含代码)
- HDU 5179
- iOS 用C语言实现画矩形
- 建小顶堆以及推排序
- PHP 常用功能
- 【转】文件下载中文显示 content-disposition 正确设置
- poj 2762 强连通分量+拓扑排序(判断图是否为单向连通)
- 2012年10月9号阿里巴巴笔试(c++)
- 深入web请求
- 幂等
- Spring4 + Junit4 实现测试中ApplicationContext的获取