如何在MonoGame中绘制形状,例如矩形和圆形,而不必在"内容"文件夹中保存预先绘制的形状?
DrawRectangle()和DrawEllipse()适用于Windows窗体,不适用于我正在使用的OpenGL.
当我运行以下代码时:
private void button1_Click(object sender, EventArgs e)
{
Bitmap b = new Bitmap(300, 400);
using (Graphics g = Graphics.FromImage(b))
{
g.FillRectangle(Brushes.Black, new Rectangle(0, 0, 300, 400));
}
b.RotateFlip(RotateFlipType.Rotate90FlipNone);
using (Graphics g2 = Graphics.FromImage(b))
{
g2.DrawRectangle(new Pen(Color.White, 7.2f), 200, 100, 150, 100);
}
using (Graphics g3 = this.panel1.CreateGraphics())
{
g3.DrawImage(b, 0, 0);
}
}
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:
alt text http://www.freeimagehosting.net/uploads/2c309ec21c.png
笔记:
它只发生在我旋转图像,然后绘制一个超出图像原始尺寸的矩形时.
矩形不会截断为原始图像宽度 - 仅绘制矩形的右边缘.
这种情况发生在各种情况中.我首先在一个更复杂的应用程序中注意到它 - 我只是编写了这个应用程序来简单说明问题.
谁能看到我做错了什么?
我需要以编程方式实现下面附加的图像,有什么办法吗?我知道如何绘制矩形,layer-list但对于底部特定的锯齿形纹理我不知道
请帮我实现这个形状
提前致谢
如何检查鼠标是否单击了矩形?
Graphics gfx;
Rectangle hitbox;
hitbox = new hitbox(50,50,10,10);
//TIMER AT THE BOTTOM
gfx.Draw(System.Drawing.Pens.Black,hitbox);
Run Code Online (Sandbox Code Playgroud) 我遇到了一个我不知道如何解决的问题.如果可以,请你帮助我.在我的应用程序中,我必须创建一个自定义视图扩展视图.在这个视图中,我应该绘制很多矩形,然后通过canvas.drawRect或canvas.drawRoundRect创建它们.很明显.但我想创建这些矩形的复合设计(有渐变,角落,填充等),我想用XML执行这些设置(渐变,角落,填充等).我该怎么做?问题是我在XML中确定形状我只能将此drawable用作背景,但是当我绘制一个矩形时,我无法为矩形设置背景.也许还有另一种方法可以解决这个问题.我可以使用XML形状对象不仅可以设置为背景,还可以设置具有x,y坐标和宽度,高度的视图对象?
编辑:我可以绘制矩形:
canvas.drawRect(x1, y1, x2, y2, paint);
Run Code Online (Sandbox Code Playgroud)
但我在XML中有矩形设置,如下所示:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- Specify a gradient for the background -->
<gradient
android:angle="90"
android:startColor="#55000066"
android:centerColor="#FFFFFF"
android:endColor="#55000066" />
<!-- Specify a dark blue border -->
<stroke
android:width="2dp"
android:color="#000066" />
<!-- Specify the margins that all content inside the drawable must adhere to -->
<padding
android:left="5dp"
android:right="5dp"
android:top="5dp"
android:bottom="5dp" />
<corners
android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
我想将此设置应用于我的矩形.怎么样?
我很难做一个相当简单的任务,即获取圆的直径然后绘制它.到目前为止,这是我的代码.
import javax.swing.*;
import java.awt.Graphics;
public class Shapes extends JFrame
{
double diameter;
public Shapes()
{
setSize(600,600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void getDiameter()
{
String input = JOptionPane.showInputDialog("What is the diameter of the circle?");
diameter = Double.parseDouble(input);
Shapes gui = new Shapes();
gui.setVisible(true);
}
public static void main(String[] args)
{
Shapes app = new Shapes();
app.getDiameter();
}
public void paint(Graphics canvas)
{
canvas.drawOval(50, 50, (int)diameter, (int)diameter);
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它会调出Jframe窗口,但没有绘制任何东西,所以我猜测直径的值永远不会传递给paint方法.有人可以帮助我让这个工作吗?谢谢.
我想在表单上绘制一个简单的2d矩形.
因为我从未在vb.net中做过任何图形化的事情,所以我搜索了网络并找到了很多实例,它提供了与此类似的解决方案.
Public Sub DrawRectangleRectangle(ByVal e As PaintEventArgs)
' Create pen.
Dim blackPen As New Pen(Color.Black, 3)
' Create rectangle.
Dim rect As New Rectangle(0, 0, 200, 200)
' Draw rectangle to screen.
e.Graphics.DrawRectangle(blackPen, rect)
End Sub
Run Code Online (Sandbox Code Playgroud)
然而,我不明白这是如何工作的......这是什么e As PaintEventArgs?该子要求输入什么?如何绘制一个简单的矩形?
对于初学者来说,我想要一些简单易用的东西,这样我就可以对它进行实验并最终学习更高级的东西.