我需要在Windows窗体上以丰富的格式编写一行文本.我怎么能得到这个?
我尝试将 C# 中的字符串(单个字符)绘制到位图中的确切位置:
Bitmap bmp = new Bitmap(64, 64);
Graphics g = Graphics.FromImage(bmp);
g.DrawString("W", font1, new SolidBrush(myColor), new Point(32,32);
Run Code Online (Sandbox Code Playgroud)
单个字母周围有太多空白空间,我无法猜测绘制角色的“所需”位置,使其在最后的正确位置。
到现在为止,我已经有了字符的像素精确尺寸(查看单独呈现的位图中的位)。但是,如果我无法在确切位置(例如中心或右上角或....)绘制字符,则此信息是无用的。
是否有其他方法可以在 C# 中在位图上绘制文本?或者是否有任何转换方法可以转换 DrawString 需要的实际像素位置?
我正在绘制一个图表,其中有两个点,每个点都有一条带有权重的线。
例如图表:点“15”到点“16”线的权重为 1.872,点“16”到点“15”的权重为 1.567。
现在看一下我的图表:
我想画一个始终与线平行(相邻)的字符串。
我计算了直线的斜率,而我计算的角度是该斜率的反正切:
我使用这个函数来旋转字符串:
public static void drawRotate(Graphics2D g2d, double x, double y, double angle, String text) {
g2d.translate((float)x,(float)y);
g2d.rotate(Math.toRadians(angle));
g2d.drawString(text,0,0);
g2d.rotate(-Math.toRadians(angle));
g2d.translate(-(float)x,-(float)y);
}
Run Code Online (Sandbox Code Playgroud)
使用 arctan((y2-y1)/(x2-x1)= 线的斜率 ) 的角度,效果不佳。
如何旋转该字符串使其始终与我绘制的线平行?
我的目标:像这个例子一样绘制字符串
在我的C#winforms应用程序中,我有一个图片框,可以将一些位图图像加载到其中。我想做的是,如果用户单击图片框内的某个位置,则在鼠标位置处将出现一个小文本框,用户可以向图片添加自定义文本(注释)。
我知道如何将字符串写入位图文件,但是我找不到在鼠标位置弹出文本框的方法,并且当用户写东西并按Enter键时,会自动将文本添加到图像中。如何定义此文本框及其属性?
谢谢。
我需要帮助,因为我正在尝试用Java编写游戏代码.当我发现它不会将字符串绘制到JFrame时,我被阻止了.我已经尝试了几种方法来解决这个问题并进行了大量的研究但却一无所获.这是代码: - 俄勒冈州(主类):
package com.lojana.oregon.client;
import java.awt.*;
import javax.swing.*;
import com.lojana.oregon.src.Desktop;
import com.lojana.oregon.src.Keyboard;
import com.lojana.oregon.src.Mouse;
import com.lojana.oregon.src.Paint;
public class Oregon extends JFrame {
private static final long serialVersionUID = 1L;
// Currently unused but there will be a use for it in the future
public Desktop desktop;
public String TITLE = "Oregon";
public Oregon() {
/* Window code */
setTitle(TITLE);
setSize(640, 640);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
/* Extra code for Window */
addKeyListener(new Keyboard());
addMouseListener(new Mouse());
}
public void paint(Graphics g) …Run Code Online (Sandbox Code Playgroud) 我是python爱好者和reportlab新手。
我知道如何使用drawString将文本放在页面上的特定位置,例如:c.drawString(10,100,“ Welcome to Reportlab!”)
但是我不知道如何放置表格(只有几行长),以便表格从与c.drawString(10,100,“ Welcome to Reportlab!”)相同的位置开始如果我学习如何将桌子放在那儿,可以放在其他地方。
我也无法弄清楚如何在同一脚本中使用drawString,因为使用画布是我知道如何使用drawString函数的唯一方法。我的4行画布代码(在本段之后)将关闭画布/文件并创建PDF。该表代码(下面进一步)也关闭了文件并构建了PDF,并且我看不到如何使用“ doc.build(elements)”行来关闭用于drawString操作的画布。
c = canvas.Canvas(r"e:\hellonu.pdf", pagesize=letter)
c.setFont("Courier", 9) #choose your font type and font size
c.drawString(10,60,"Welcome to Reportlab!")
c.save()
Run Code Online (Sandbox Code Playgroud)
我将不胜感激您可以为我提供的所有指导(1)如何放置表格,使其始于10,100,以及(2)如何在同一脚本中使用drawString。如果我的某些代码无用,请不要以为我是故意放进去的;我尝试从示例中复制足够的内容,以便我的表具有自动换行功能。
这是我一直在玩的代码:
# http://zewaren.net/site/node/139
from reportlab.lib import colors
from reportlab.lib.pagesizes import LETTER, inch, portrait
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph
from reportlab.lib.styles import getSampleStyleSheet
doc = SimpleDocTemplate(r"e:\test_report_lab.pdf", pagesize=LETTER, rightMargin=30,leftMargin=30, topMargin=30,bottomMargin=18)
doc.pagesize = portrait(LETTER)
elements = []
data = [
["Directory"],
["AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA "],
]
style = TableStyle([('ALIGN',(1,1),(-2,-2),'RIGHT'),
('TEXTCOLOR',(1,1),(-2,-2),colors.red),
('VALIGN',(0,0),(0,-1),'TOP'),
('INNERGRID', …Run Code Online (Sandbox Code Playgroud) 我想在面板上绘制以下文本:

这是一个多颜色的文本。
我找到了这篇关于绘制彩色文本的文章。
我用单词替换了字符,但它不起作用。

(我使用FillPath/DrawPath来绘制文本)
我的代码:
private void Form1_Paint(object sender, PaintEventArgs e)
{
const string txt = "C# Helper! Draw some text with each letter in a random color.";
// Make the font.
using (Font the_font = new Font("Times New Roman", 40,
FontStyle.Bold | FontStyle.Italic))
{
// Make a StringFormat object to use for text layout.
using (StringFormat string_format = new StringFormat())
{
// Center the text.
string_format.Alignment = StringAlignment.Center;
string_format.LineAlignment = StringAlignment.Center;
string_format.FormatFlags = StringFormatFlags.NoClip;
// Make …Run Code Online (Sandbox Code Playgroud) 嘿伙计我在这里有一点问题.我有一个面板,我正在绘制一个字符串.这是一个游戏,所以我不断重绘分数,以便更新它.然而,当我再次绘制它时,它被绘制在上一个分数的顶部,所以它看起来都是乱码.任何想法如何解决这一问题?
comp2d.drawString(GetScore(分数),ScoreX,ScoreY);
我一直在搜索,文档也没有谷歌回复一个很好的答案.我刚开始使用java,所以请帮帮我.我收到了错误
Graphics.drawString('hello',10, 10);
Run Code Online (Sandbox Code Playgroud)
但是所有文档告诉我的是我需要使用str,int,int.我的错误是:
Cannot make a static reference to the non-static method drawString(str,int,int) from the type Graphics
Run Code Online (Sandbox Code Playgroud)
那么有谁知道如何解决这个问题?
所以我得到了这个错误:
java cannot be applied to given types; required: java.lang.String,int,int; found:java.lang.String; reason: actual and formal argument lists differ in lenghhs
Run Code Online (Sandbox Code Playgroud)
当我在一个Actor中输入这个(我使用Greenfoot)时:
public String getPunkte()
{
String stringPunkte = Integer.toString(punkte);
return(stringPunkte);
}
Run Code Online (Sandbox Code Playgroud)
这在另一个:
public void malePunkte()
{
GreenfootImage img = new GreenfootImage(50, 10);
img.drawString(getPunkte());
}
Run Code Online (Sandbox Code Playgroud)
对于那些不理解的人:这应该将int(punkte)(意思是德语中的点)转换为String,然后将一个actor中的点数返回给另一个actor,然后显示该数字.
如果您仍然不明白或者您需要另一段代码,请询问.
谢谢
drawstring ×10
java ×5
graphics ×4
.net ×3
c# ×3
swing ×3
winforms ×2
awt ×1
bitmap ×1
graphics2d ×1
graphicspath ×1
greenfoot ×1
jframe ×1
picturebox ×1
popup ×1
python-2.7 ×1
reportlab ×1
richtext ×1
shapes ×1
static ×1
textbox ×1