Windows没有现成的这种笔,在很多软件中是用位图brush在区域中填充实现的。

解决方案 »

  1.   

    那 DrawFocusRect 呢?这可是API啊
      

  2.   

    PS_DOT风格做出来的就和你在桌面拖动鼠标画出来的线的风格是一样的
    不知道你要的是不是这样
      

  3.   

    CPen pen(PS_DOT,1,0x00000000);
    CPen *op = dc.SelectObject(&pen);
    dc.Rectangle();
    dc.SelectObject(op);
      

  4.   

    不行的,我要的是一个pixel有点,一个pixel没点,而不是一个point有点,一个point没点而 1point 有时是 3pixel
      

  5.   

    好像有个API函数可以创建这样的笔,ExtCreatePen
    HPEN ExtCreatePen(
      DWORD dwPenStyle,      // pen style
      DWORD dwWidth,         // pen width
      CONST LOGBRUSH *lplb,  // brush attributes
      DWORD dwStyleCount,    // length of custom style array
      CONST DWORD *lpStyle   // custom style array
    );
    你可以看一下,是否符合要求。
    采用PS_COSMETIC画笔的风格。详细的可看MSDN
      

  6.   

    sunrise(日出江花红胜火)说法没错。
      

  7.   

    我也知道他说得没错啊,可我要的是实例代码啊, PS_COSMTIC 我不知听过多少遍了,你们没见我的代码里有
    CPen* pOldPen = dc.SelectObject(new CPen(PS_COSMETIC|PS_USERSTYLE,1,&lb,2,dwdStyles));
    么?? 可是实现不了啊,所以我需要一个能实现的代码啊,帮帮忙吧?各位?
      

  8.   

    这是一个API函数
    hPen=CreatePen(iPenstyle,iWidth,crColor);
    iPenstyle是画笔的虚线和实线,可使用PS_DOT,为虚线
    PS_SOLID   实线
    PS_DASH    - - - - - -
    PS_DASHDOT -.-.-.-
    PS_DOT    .............
    在使用时可以用SelectObject(hdc,CreatePen(PS_DOT,0,RGB(255,0,0)));
      

  9.   

    你首先用此API函数创建一个画笔的句柄,再通过此句柄创建画笔类的对象,CPen类中有从句柄创建CPen对象的函数,你可以试试一下。
      

  10.   

    用这样的风格:PS_GEOMETRIC | PS_USERSTYLE | PS_ENDCAP_SQUARE
      

  11.   

    如果不用User Style就这样:
    PS_DOT | PS_GEOMETRIC | PS_ENDCAP_SQUARE
      

  12.   

    dc.SetMapMode(MM_TEXT);
    DWORD dwdStyles[] = { 1,1 };
    LOGBRUSH lb;
    lb.lbColor = (COLORREF)0xAAAAAA;
    lb.lbStyle = BS_SOLID;

    //dc.SetLayout(LAYOUT_RTL);
    //CPen* pOldPen = dc.SelectObject(new CPen(PS_COSMETIC|PS_USERSTYLE,1,&lb,14,dwdStyles));

    HPEN hPen = ExtCreatePen(PS_COSMETIC|PS_USERSTYLE,1,&lb,2,dwdStyles);
    CPen* pOldPen = dc.SelectObject(CPen::FromHandle(hPen));
    //画坐标
    dc.MoveTo(rcBound.left + 2, rcBound.top);
    dc.LineTo(rcBound.left + 2, rcBound.bottom - 3);
    dc.LineTo(rcBound.right,rcBound.bottom - 3);

    dc.SelectObject(pOldPen);
    执行结果依旧如此,没有办法啊,我想要代码,现成的代码啊~~~~,这种说法听得多了,我却实现不了,原来要几行源代码都这么难..
      

  13.   

    我说的可是:
    PS_GEOMETRIC | PS_USERSTYLE | PS_ENDCAP_SQUARE

    PS_DOT | PS_GEOMETRIC | PS_ENDCAP_SQUARE
    请你看仔细。
      

  14.   

    sorry,endcap类型应该用PS_ENDCAP_FLAT:PS_GEOMETRIC | PS_USERSTYLE | PS_ENDCAP_FLAT

    PS_DOT | PS_GEOMETRIC | PS_ENDCAP_FLAT
      

  15.   

    pcman: Thank you!
    问题解决,给分
      

  16.   

    to pcman1990:
     问题解决,谢谢
     给分了