像在WinForms中一样在WPF中绘制线条

时间:2015-12-29 16:02:34

标签: c# wpf listview filter

如何在WPF中绘制线条,使结果看起来像PictureBox.BackgroundImage结果?

  • 我已经得到了这张图片:PictureBox

    enter image description here

  • 我反过来说:

    enter image description here

  • 我得到了什么:TextureBrush截图

    enter image description here

  • 代码:

      从反转的位图中刷<:>刷:= PictureBox.Image
      尺寸:= 300
      barWidth:= 25
      barSpacing:= 5

      结果获得public Bitmap CreateSpectrumLine(Brush brush, int size, int barWidth, int barSpacing) { using (var pen = new Pen(brush, (float)barWidth)) { var b = new Bitmap(size, size); using (var g = Graphics.FromImage(b)) { g.Clear(Color.Transparent); g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None; int h = size; PointData[] points = CalculatePoints(size); for (int i = 0; i < points.Length; i++) { PointData p = points[i]; int barIndex = p.PointIndex; float x = (float)((barWidth + barSpacing) * barIndex + barWidth / 2); var p1 = new PointF(x, h + 1); var p2 = new PointF(x, h - (float)p.Value + 1); g.DrawLine(pen, p1, p2); } } return b; } } struct PointData { public int PointIndex; public double Value; }

    WPF

如何使用BitmapSource组件/命令获得相同的结果(产生from apiclient import discovery import oauth2client from oauth2client import client from oauth2client import tools import os import httplib2 import email from apiclient.http import BatchHttpRequest import base64 from bs4 import BeautifulSoup import re import datetime try: import argparse flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args() except ImportError: flags = None SCOPES = 'https://www.googleapis.com/auth/gmail.readonly' CLIENT_SECRET_FILE = '/Users/sokser/Downloads/client_secret.json' APPLICATION_NAME = 'Gmail API Python Quickstart' def get_credentials(): """Gets valid user credentials from storage. If nothing has been stored, or if the stored credentials are invalid, the OAuth2 flow is completed to obtain the new credentials. Returns: Credentials, the obtained credential. """ home_dir = os.path.expanduser('~') credential_dir = os.path.join(home_dir, '.credentials') if not os.path.exists(credential_dir): os.makedirs(credential_dir) credential_path = os.path.join(credential_dir, 'gmail-python-quickstart.json') store = oauth2client.file.Storage(credential_path) credentials = store.get() if not credentials or credentials.invalid: flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES) flow.user_agent = APPLICATION_NAME if flags: credentials = tools.run_flow(flow, store, flags) else: # Needed only for compatibility with Python 2.6 credentials = tools.run(flow, store) print('Storing credentials to ' + credential_path) return credentials def visible(element): if element.parent.name in ['style', 'script', '[document]', 'head', 'title']: return False elif re.match('<!--.*-->', str(element)): return False return True def main(): """Shows basic usage of the Gmail API. Creates a Gmail API service object and outputs a list of label names of the user's Gmail account. """ credentials = get_credentials() http = credentials.authorize(httplib2.Http()) service = discovery.build('gmail', 'v1', http=http) #Get yesterdays date and the epoch time yesterday = datetime.date.today() - datetime.timedelta(1) unix_time= int(yesterday.strftime("%s")) messages = [] message = service.users().messages().list(userId='me').execute() for m in message['messages']: #service.users().messages().get(userId='me',id=m['id'],format='full') message = service.users().messages().get(userId='me',id=m['id'],format='raw').execute() epoch = int(message['internalDate'])/1000 msg_str = str(base64.urlsafe_b64decode(message['raw'].encode('ASCII')),'utf-8') mime_msg = email.message_from_string(msg_str) #print(message['payload']['parts'][0]['parts']) #print() mytext = None for part in mime_msg.walk(): mime_msg.get_payload() #print(part) #print() if part.get_content_type() == 'text/plain': soup = BeautifulSoup(part.get_payload(decode=True)) texts = soup.findAll(text=True) visible_texts = filter(visible,texts) mytext = ". ".join(visible_texts) if part.get_content_type() == 'text/html' and not mytext: mytext = part.get_payload(decode=True) print(mytext) print() if __name__ == '__main__': main() )?

0 个答案:

没有答案