http://msdn.microsoft.com/en-us/library/system.drawing.graphics.drawrectangle.aspx
FillRectangle,DrawRectangle,FillElipse和DrawEllipse都可以采用4个浮点(或"单个")参数:x,y,width,height.但是DrawRectangle是唯一不会使用RectangleF的.
我想知道是否有人知道这是为什么.看起来他们似乎只是忘了超负荷.
我正在使用monogame(使用XNA API接口)来编写我的游戏.到目前为止,它很棒,但我已经遇到了一些应该简单的事情.
我需要画一个2d的正方形.但我只想要边框(没有填充).
我看过很多例子,展示了如何做一个填充的.但没有一个只显示边界.
我想我可以制作一个图像并使用它.但我怀疑它会很好地调整大小.
我需要用几条数据线注释一个pylab矩形 - 这些数据行的长度不同.搜索matplotlib文档和谷歌搜索,我找不到一种方法来给注释的不同部分提供不同的大小.
以下代码段演示了此问题:
import pylab
from matplotlib.patches import Rectangle
pylab.rcParams['verbose.level'] = 'debug-annoying'
def draw_rectangle(lower, upper, entry):
ax = pylab.subplot(111)
r = Rectangle( lower, upper[0]-lower[0], upper[1] - lower[1],
edgecolor='k')
ax.add_patch(r)
textRank = str(entry['rank'])
textTeamName = entry['teamName']
textSubmissionDate = entry['submissionDate']
text = textRank + "\n" + textTeamName + "\n" + textSubmissionDate
ax.add_artist(r)
rx, ry = r.get_xy()
cx = rx + r.get_width()/2.0
cy = ry + r.get_height()/2.0
ax.annotate(text, (cx, cy), color='w', weight='bold', ha='center', va='center', size=14)
if __name__ == '__main__':
entry …Run Code Online (Sandbox Code Playgroud) 标题说明了一切,我一直在寻找并找不到任何直截了当的东西.如何用点(x1,y1)和(x2,y2)取一条线并检查它在矩形(xR,yR)之间的交点?我在Line2D包中看到有一些交集方法,但不知道如何设置它.有人能告诉我一个正确的方法来设置它来检查交叉点(碰撞)吗?
我想编制一张长方形纸张的检测,这张纸在每一面都不一定要完全笔直,因为我可以"在空中"拍摄它,这意味着纸张的单面可能会得到扭曲了一下.
应用程序(iOs和android)CamScanner非常好,我想知道如何实现它.首先我想到了:
但这给了我很多不同类型图像的问题.我想知道是否有更好的方法直接检测图像中的矩形形状,如果是这样,如果camscanner也可以像这样实现它!?
以下是CamScanner中拍摄的一些图像.即使在a)侧面扭曲(但是角落仍然显示在叠加层中,但并不真正适合白纸的角落),并且在b)背景非常接近实际纸张但这些都被很好地检测到了它仍然被正确识别:

它甚至可以正确获取旋转的图片:

当我插入一些测试错误时,它会失败但至少检测到一些轮廓,但总是尝试将其检测为矩形:

在这里它完全失败了:

我想在最后三个例子中,如果它会进行霍夫变换,它可能已经检测到矩形的四个边中的至少两个.
有什么想法和提示吗?非常感谢提前
image image-processing rectangles edge-detection hough-transform
我想在我的情节中绘制一个空矩形.
到目前为止,我有:
set style rect back fs empty border lt 3
set object 1 rect from 1,1 to 2,2
Run Code Online (Sandbox Code Playgroud)
我的矩形用虚线表示.如何更改线条的颜色?lc在边界之后似乎不起作用.我也试过设置一个新的线条样式和边框,但我没有成功.
谢谢!
我有一个整数维矩形平面.在这个平面内部,我有一组非交叉矩形(整数维和整数坐标).
我的问题是如何有效地找到该集的逆; 这是平面中未包含在子矩形中的部分.当然,这个点集合形成了一组矩形 - 这些是我感兴趣的.
我当前的天真解决方案使用布尔矩阵(平面的大小),并通过将点i,j设置为0来实现,如果它包含在子矩形内,则为1.然后我遍历矩阵的每个元素,如果它是1(自由),则试图从该点向外"生长"一个矩形.唯一性不是问题(任何合适的矩形都很好).
有没有哪种算法可以更有效地解决这个问题?(即,无需求助于布尔矩阵.
这是问题所在.我有一个大小为1的矩形画布.因此它的坐标系为(0.0 ... 1.0 - x和0.0 ... 1.0 - y).
我也有一些瓷砖.瓷砖也是矩形.它们具有不同的尺寸,并且瓷砖的数量是变量.
我想在矩形画布中堆叠瓷砖,从0.0到1.0(从左到右,从上到下):
1)瓷砖必须适合画布(但尽可能多地填充空间)
2)瓷砖必须按比例缩放(如果它们不合适),每个瓷砖应按比例缩放(它们必须保持相同的比例).
3)想象你手中有这个"瓷砖",然后将它们一个接一个地放入这个画布中
4)它几乎像"TreeMap算法"但是 - 瓷砖的形状必须相同(矩形),我不需要填充画布的所有空间

有没有人可以用任何C语言(C,C++,Java,C#)向我展示算法?
我试过这个.
1)我计算了瓷砖的面积,然后我计算了瓷砖面积的总和(例如:我有两个瓷砖,一个面积为2,其他面积为1,它们的意思是我的总和为3)
2)然后我计算每个瓷砖在"总面积"中的"比例"(例如:2/3和1/3)
3)然后通过Math.sqrt(x)计算矩形瓦片的大小(例如:Math.sqrt(2/3))
4)然后逐个绘制瓷砖......
但这总是不起作用.有时我会把瓷砖放在画布外面.*
在C#,WPF我创建了一个矩形:
Rectangle myRgbRectangle = new Rectangle();
myRgbRectangle.Width = 1;
myRgbRectangle.Height = 1;
SolidColorBrush mySolidColorBrush = new SolidColorBrush();
Run Code Online (Sandbox Code Playgroud)
是的,我真的只想要它是1像素乘1像素.我想根据变量高度改变颜色,如下所示:
mySolidColorBrush.Color = Color.FromArgb(255, 0, 0, (byte)height);
myRgbRectangle.Fill = mySolidColorBrush;
Run Code Online (Sandbox Code Playgroud)
现在,我如何在屏幕上的特定x,y位置绘图?我的MainWindow.xaml上有一个网格(myGrid).
谢谢!
这是相关的代码:
myRgbRectangle.Width = 1;
myRgbRectangle.Height = 1;
SolidColorBrush mySolidColorBrush = new SolidColorBrush();
int height;
for (int i = 0; i < ElevationManager.Instance.heightData.GetLength(0); i++)
for (int j = 0; j < ElevationManager.Instance.heightData.GetLength(1); j++)
{
height = ElevationManager.Instance.heightData[i, j] / 100;
// Describes the brush's color using RGB values.
// Each value has …Run Code Online (Sandbox Code Playgroud) 创建AffineTransform哪个地图坐标从一个矩形到另一个矩形(给出浮点/双矩形)的最简单方法是什么?
更新1
矩形可以完全不同.例如[(0,0) - (1,1)]和[(150,-14) - ( - 1000,-14.1)].转型应该统一转变.例如,矩形角应该一对一转换.例如,坐标(0,0)应转向(150,-14).
更新2
我需要AffineTransform对象,而不仅仅是计算.因为我想将它应用于Graphics对象.此外,我想以简单变换的一些连接的形式.
更新3
以下3项测试都失败了:
public class RectangleTransformTest {
private static final double delta = 0.001;
Rectangle2D r1 = new Rectangle2D.Double(-1, 0, 2, 0.01);
Rectangle2D r2 = new Rectangle2D.Double(10, 20, 400, 300);
AffineTransform t;
Point2D src;
Point2D dst1, dst2;
@Test
public void test1() {
t = new AffineTransform();
t.translate(+r2.getMinX()-r1.getMinX(), +r2.getMinY()-r1.getMinY());
t.scale(r2.getWidth()/r1.getWidth(), r2.getHeight()/r1.getHeight());
}
@Test
public void test2() {
t = new AffineTransform();
t.scale(r2.getWidth()/r1.getWidth(), r2.getHeight()/r1.getHeight());
t.translate(+r2.getMinX()-r1.getMinX(), +r2.getMinY()-r1.getMinY()); …Run Code Online (Sandbox Code Playgroud) rectangles ×10
algorithm ×2
java ×2
.net ×1
annotations ×1
awt ×1
c# ×1
collision ×1
draw ×1
drawing ×1
font-size ×1
gnuplot ×1
graphics ×1
image ×1
intersection ×1
line ×1
matplotlib ×1
monogame ×1
overloading ×1
tiles ×1
treemap ×1
wpf ×1
xna ×1