2010-04-06 33 views
5

Tôi muốn vẽ một thanh tiến trình với tỷ lệ phần trăm trong trung tâm của nó, nhưng tôi muốn các văn bảntiêu cực (tương phản) màu của nền .Vẽ văn bản trên một Control .net với màu sắc tiêu cực của nền - pha trộn

Vì vậy, một phần của văn bản trên toàn bộ phần của ProgressBar sẽ có màu trắng và phần trên phần không được lấp đầy sẽ có màu trắng.

tôi có thể làm điều này đơn giản bằng cách "gian lận"

  • sơn đen phần của văn bản đầu tiên
  • vẽ hình chữ nhật tiến độ (nó sẽ che phần được ẩn)
  • sơn trắng văn bản so với hình chữ nhật tiến bộ duy nhất (cắt nó)

các perfor tác động của việc vẽ văn bản hai lần là không đáng kể trong ứng dụng này, nhưng tôi quan tâm nếu có một số cách đơn giản để thực hiện nó chỉ trong hai bước (như thanh tiến trình bằng cách nào đó đảo ngược văn bản đã vẽ) với trộn.

+0

Làm cách nào để bạn cắt văn bản màu trắng? – farukdgn

+0

@farukdgn 'graphicsObj.Clip = new Region (hình chữ nhật);' - điều này hạn chế vẽ trong đối tượng 'Graphics' đến vùng' Rectangle' mà bạn đã đặt. – domi1819

Trả lời

4

Điều bạn đang làm là tốt. Các thủ thuật cũ như SetROP2() không hoạt động nữa với văn bản nhận được chống răng cưa, đặc biệt là với hiển thị ClearType. Việc nhận các pixel aliasing với màu sai là rất đáng chú ý. Graphics.CompositingMode cho phù hợp không hỗ trợ các hiệu ứng nữa.

0

Bạn có thể sử dụng XOR để tính toán màu âm (đảo ngược);

Public Function InvertColor(color As Long) As Long 
    Return (color Xor &HFFFFFF) 
End Function 
+0

Đó là không có vấn đề, tôi biết cơ sở và màu sắc đảo ngược, nhưng tôi hỏi về cách làm "XOR" pha trộn trong đồ họa – Axarydax

Các vấn đề liên quan