drawstring(drawstring)

张工 2022-05-15 19:02:15 阅读:62
  

java中Graphics类drawString()方法问题

  你这样的做法很多地方都不e69da 5e 887 aa 323131愚人节2363134313033333333335正确的!比如如果你用的是流布局而你也没有给你的模块的父类传文本得话!那么他的自定义按钮大写是默认为没有文本的大小!就是很小的啦!(不知道你明白没)给你给个例子

  导入Java。awt。颜色;

  导入Java。awt。光标;

  导入Java。awt。维度;

  导入Java。awt。流程布局;

  导入Java。awt。图形;

  导入Java。awt。工具包;

  导入Java。awt。事件。动作事件;

  导入Java。awt。事件。动作监听器;

  导入Java。awt。事件。鼠标事件;

  导入Java。awt。事件。鼠标监听器;

  导入Java。io。可序列化;

  导入javax。挥棒。*;

  导入jxl。格式。边框;

  publicclassNButton{

  publicstaticvoidmain(String[]args){

  JFramejf=newJFrame('按钮');

  我的按钮我的按钮=新建我的按钮('按钮');

  我的纽扣。addactionlistener(newActionListener(){

  @覆盖

  publicavodactionperformed(action evente){

  System.out.println('奶萨倒萨爱上');

  });

  JF。添加(我的按钮);

  JF。设置布局(new flow layout());

  JF。设置可见(真);

  JF。setdefaultcloseoperation(JFrame .EXIT _ ON _ CLOSE);

  jf.setSize(200,200);

  JF。setlocationrelativeto(null);

  classMybuttonextendsJButton{

  privatestaticfinallonserialversionuid=1L;

  privateStringstr=new string();

  publicMybutton(){

  super();

  //todo自动生成的constructorstub

  publicMybutton(Stringtext){

  超级(文字);

  维度dimension=this。getpreferredsize();

  维度。宽度=尺寸。身高=数学。最大(尺寸。宽度,尺寸。身高);

  这个。setpreferredsize(维度);

  这个。setborderpainted(false);

  这个。setcontentareaffilled(false);

  str=文本;

  @覆盖

  protectedvoidpainporder(图形g){

  g。设置颜色(这个。get前台());

  g.drawOval(0,15,getSize().width-1,getSize().身高-30);

  @覆盖

  protectedvoidpaintComponent(图形g){

  超级棒。油漆成分(g);

  if(this.getModel().isArmed()){

  g.setColor(颜色。蓝色);

  }否则{

  g.setColor(颜色。白色);

  }

  g.fillOval(0,15,this.getWidth(),this。getheight()-30);

  g.setColor(颜色。黑色);

  g。拉带(str,20,40);

  }626

16964757a686964616fe59b9ee7ad9431333337396332DrawString(String, Font, Brush, PointF)

  在指定位置并且用指定的 Brush 和 Font 对象绘制指定的文本字符串。

  DrawString(String, Font, Brush, RectangleF)

  在指定矩形并且用指定的 Brush 和 Font 对象绘制指定的文本字符串。

  DrawString(String, Font, Brush, PointF, StringFormat)

  使用指定 StringFormat 的格式化特性,用指定的 Brush 和 Font 对象在指定的位置绘制指定的文本字符串。

  DrawString(String, Font, Brush, RectangleF, StringFormat)

  使用指定 StringFormat 的格式化特性,用指定的 Brush 和 Font 对象在指定的矩形绘制指定的文本字符串。

  DrawString(String, Font, Brush, Single, Single)

  在指定位置并且用指定的 Brush 和 Font 对象绘制指定的文本字符串。

  DrawString(String, Font, Brush, Single, Single, StringFormat)

  使用指定 StringFormat 的格式化特性,用指定的 Brush 和 Font 对象在指定的位置绘制指定的文本字符串。drawstring

  public abstract void drawstring(string str,

  int x,

  int y)

  使用此图形上下文的当前字体和颜色绘制由指定 string 给定的文本。最左侧字符的基线位于此图形上下文坐标系统的 (x, y) 位置处。

  str - 要绘制的 string。

  x - x 坐标。

  y - y 坐标。

  另请参见:

  drawbytes(byte[], int, int, int, int), drawchars(char[], int, int, int, int)

  --------------------------------------------------------------------------------

  drawstring

  public abstract void drawstring(attributedcharacteriterator iterator,

  int x,

  int y)

  使用此图形上下文的当前颜色绘制由指定迭代器给定的文本。迭代器必须为每个字符指定字体。最左侧字符的基线位于此图形上下文坐标系统的 (x, y) 位置处。

  iterator - 要绘制其文本的迭代器

  x - x 坐标。

  y - y 坐标。

  另请参见:

  drawbytes(byte[], int, int, int, int), drawchars(char[], int, int, int, int)g.setBgColor(Color.BLACK); //设置背景色

drawstring

opencv使用drawString()函数与drawButton()函数应该包含的头文件是什么?

  这两个应该不是openCV里面的函数,会不会是别人自己定义的函数然后封装了getTextSize()、putText()等相应的函数,你找找看看,下面是我见过的这两个函数:

  Rect drawString(Mat img, string text, Point coord, Scalar color, float fontScale = 0.6f, int thickness = 1, int fontFace = FONT_HERSHEY_COMPLEX)

  //获取文本大小和基线

  int baseline=0;

  Size textSize = getTextSize(text, fontFace, fontScale, thickness, &baseline);

  baseline += thickness;

  // 为左/右或上/下调整校正坐标

  if (coord.y >= 0) {

  //图像左上角的文本的左上角的坐标,因此按行向下移动

  coord.y += textSize.height;

  else {

  //图像左下角的文本的左下角的坐标,因此从底部上来

  coord.y += img.rows - baseline + 1;

  // 如果希望变成右侧调整

  if (coord.x < 0) {

  coord.x += img.cols - textSize.width + 1;

  // 获取文本的边界矩形

  Rect boundingRect = Rect(coord.x, coord.y - textSize.height, textSize.width, baseline + textSize.height);

  // 画出平滑的文本

  putText(img, text, coord, fontFace, fontScale, color, thickness, CV_AA);

  //让用户知道文本的多大,以防他们想安排些事情

  return boundingRect;

  Rect drawButton(Mat img, string text, Point coord, int minWidth = 0)

  int B = 10;

  Point textCoord = Point(coord.x + B, coord.y + B);

  // 获取文本边界矩形

  Rect rcText = drawString(img, text, textCoord, CV_RGB(0,0,0));

  // 在文本周围画一个填充的矩形

  Rect rcButton = Rect(rcText.x - B, rcText.y - B, rcText.width + 2*B, rcText.height + 2*B);

  // 设置按钮的最小宽度

  if (rcButton.width < minWidth)

  rcButton.width = minWidth;

  // 创建一个半透膜的白色矩形

  Mat matButton = img(rcButton);

  matButton += CV_RGB(90, 90, 90);

  //画一个非透明的白色边界

  rectangle(img, rcButton, CV_RGB(200,200,200), 1, CV_AA);

  //使用抗锯齿,画一个实际用来显示的文本

  drawString(img, text, textCoord, CV_RGB(10,55,20));

  return rcButton;

  搜一下:opencv使用drawString()函数与drawButton()函数应该包含的头文件是什么?

二维码