更改ComboBox箭头类型

时间:2018-03-14 13:24:01

标签: c# wpf xaml combobox

我在C#WPF窗口中有一个自定义的ComboBox。这是我第一次定制一个ComboBox,我有一行代码,我现在建立的是ComboBox上的箭头。然而,虽然我现在已经确定了"数据" (M 0 0 L 4 4 L 8 0 Z)设置ComboBox上的箭头,我不知道它意味着什么或如何创建不同的箭头类型。

#define SPIN 40000000

int compteur = 0;

void *routine_thread(void *arg) {
  int i;
  printf("accessing thread ... \n");

  for (i = 0; i < SPIN / 4; ++i) {
    compteur++;
  }
  printf("quitting thread ... \n");
  pthread_exit(NULL);
}

int main(int argc, char *argv[]) {
  pthread_t thread_id[4];
  void *resultat_thread;
  int statut;
  int i;

  for (i = 0; i < 4; i++) {
    statut = pthread_create(&thread_id[i], NULL, routine_thread, NULL);
    if (statut != 0) {
      fprintf(stderr, "error creating thread\n");
      exit(EXIT_FAILURE);
    }

    statut = pthread_join(thread_id[i], &resultat_thread);
    if (statut != 0) {
      fprintf(stderr, "error joining the thread\n");
      exit(EXIT_FAILURE);
    }
  }

  printf("compteur value is : %d\n", compteur);

  if (resultat_thread == NULL)
    return EXIT_FAILURE;
  else
    return EXIT_SUCCESS;
}

有人可以指出我正确的方向来结合这些&#34;数据&#34;用于创建我需要的箭头的元素。

2 个答案:

答案 0 :(得分:0)

请看..那边的路径表示矢量坐标形式的图像。如果你想改变它..你可以在网站上找到这样的矢量图像,如www.iconfinder.com - &gt;搜索&#34;箭头&#34;在搜索框中以SVG格式下载任何图像(免费版)。 下载后,在NotePad等编辑器中打开图像,从中获取路径的值并将其放入代码中。这就是它。

您可以在此链接中找到该图标: https://www.iconfinder.com/search/?q=arrow&price=free

答案 1 :(得分:0)

感谢您的帮助。虽然我没有得到确定的答案,但你肯定会让我走上正轨。经过进一步研究,奇怪的“M 0 0 L 4 4 L 8 0 Z”被称为“几何迷你语言”。如果您需要创建自己的页面,那么将来任何人都值得一看:

https://rcosic.wordpress.com/2009/08/11/wpf-geometry-mini-language/

它解释了每个角色的含义,在不到5分钟的时间里,我就非常接近我所寻找的东西;现在我将玩它,直到我得到我想要的东西。

我目前需要改进的结果是:

<Path x:Name="Arrow" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Stroke="Black" StrokeThickness="0.5" Data="M 0 0 L 6 6 L 12 0"/>

我已经添加了迷你语言的解释,以防上面提供的链接及时停止工作。下面的解释绝不是我自己的,而是来自Mathew McDonald的一本书“C#2008中的Pro WPF”,这一点归功于作者。

F值 - 设置Geometry.FillRule属性。使用0表示EvenOdd,或1表示NonZero。此命令必须出现在字符串的开头(如果您决定使用它)

M x,y - 为几何创建新的PathFigure并设置其起点。必须在除F之外的任何其他命令之前使用此命令。但是,您也可以在绘制序列期间使用它来移动坐标系的原点。 (M代表移动)

L x,y - 创建指定点的LineSegment。

H x - 使用指定的X值创建水平LineSegment并保持Y值不变。

V y - 使用指定的Y值创建垂直LineSegment并保持X值不变。

radiusx,radiusY,degrees isLargeArch,isClockwise x,y - 创建指定点的ArcSegment。您可以指定描述弧的椭圆半径,弧旋转的度数,以及设置IsLargeArc和SweepDirection属性的布尔标志。

C x1,y1 x2,y2 x,y - 使用(x1,y1)和(x2,y2)处的控制点创建指定点的BezierSegment。

Q x1,y1 x,y - 为指定点创建QuadraticBezierSegment,其中一个控制点位于(x1,y1)。

S x2,y2 x,y - 使用前一个BezierSegment中的第二个控制点作为新BezierSegment中的第一个控制点,创建一个平滑的BezierSegment。

Z - 结束当前的PathFigure并将IsClosed设置为true。如果您不想将IsClosed设置为true,则不需要使用此命令 - 相反,如果要启动新的PathFigure或结束字符串,只需使用M.