使用c#產生高品質小空間的縮圖

.Net內建的產生縮圖的方法是Bitmap.GetThumbnailImage這個方法產生的縮圖不夠清 晰,一般我們會使用Graphics高品質插值發產生清晰的縮圖,這時候大小會不盡人意,怎 麼辦?我們可以使用jpeg壓縮的方法壓縮一下圖片,這樣圖片的大小會縮小到壓縮前的十分 之一。下面是完成這項工作的代碼:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.

用鉤子(hook)實現C#的螢幕小鍵盤效果

要實現一個螢幕小鍵盤,需要監聽所有鍵盤事件,無論表單是否被啟用。因此需要一個全域的鉤子,也就是系統範圍的鉤子。什麼是鉤子(Hook)鉤子(Hook)是windows提供的一種訊息處理機制平台,是指在程式正常運行中接受資訊之前預先啟動的函數,用來檢查和修改傳給該程式的資訊,(鉤子)實際上是一個處理訊息的程式段,通過系統調用,把它掛入系統。每當特定的訊息發出,在沒有到達目的視窗前,鉤子程式就先捕獲該訊息,亦即鉤子函數先得到控制權。這時鉤子函數即可以加工處理(改變)該訊息,也可以不作處理而繼續傳遞該訊

資料結構的C++實現之靜態鏈表

首先我們讓數組的元素都是由兩個資料域組成,data和cur。也就是說,數組的每一個下標都對應一個data和一個cur。資料域data用來存放資料元素,也就是通常我們要處理的資料;而遊標cur相當於單鏈表中的next指標,存放該元素的後繼在數組中的下標。我們把這種用數組描述的鏈表叫做靜態鏈表。數組的第一個元素,即下標為0的元素的cur就存放備用鏈表的第一個結點的下標;而數組的最後一個元素的cur則存放第一個有數值的元素的下標,相當於單鏈表的前端節點作用,當整個鏈表為空白時,則為0,表示無指向。如圖

More Effective C++之考慮變更程式庫

程式庫的設計就是一個折衷的過程。理想的程式庫應該是短小的、快速的、強大的、靈活的、可擴充的、直觀的、普遍適用的、具有良好的支援、沒有使用約束、沒有錯誤的。這也是不存在的。為尺寸和速度而進行最佳化的程式庫一般不能被移植。具有大量功能的的程式庫不會具有直觀性。沒有錯誤的程式庫在使用範圍上會有限制。真實的世界裡,你不能擁有每一件東西,總得有付出。不同的設計者給這些條件賦予了不同的優先順序。他們從而在設計中犧牲了不同的東西。因此一般兩個提供相同功能的程式庫卻有著完全不同的效能特徵。例如,考慮iostre

C#多線程學習(三)生產者和消費者

前面說過,每個線程都有自己的資源,但是代碼區是共用的,即每個線程都可以執行相同的函數。這可能帶來的問題就是幾個線程同時執行一個函數,導致資料的混亂,產生不可預料的結果,因此我們必須避免這種情況的發生。C#提供了一個關鍵字lock,它可以把一段代碼定義為互斥段(critical section),互斥段在一個時刻內只允許一個線程進入執行,而其他線程必須等待。在C#中,關鍵字lock定義如下:lock(expression)

C++語言代碼檢查工具PC-Lint四步速成

概述PC-Lint是一個曆史悠久,功能異常強勁的靜態代碼偵查工具。它的使用曆史可以追溯到電腦編程的遠古時代(30多年以前)。經過這麼多年的發展,它不但能夠監測出許多文法邏輯上的隱患,而且也能夠有效地幫你提出許多程式在空間利用、運行效率上的改進點,在很多專業級的軟體公司,比如Microsoft,

在C#中實現對ListView點擊欄位標題自動排序功能

先定義一個ListViewHelper類,代碼如下:using System;using System.Collections;using System.Windows.Forms;namespace Common{ /// <summary> /// 對ListView點擊欄位標題自動排序功能 /// </summary> public class ListViewHelper { /// <summary>

瞭解C++異常處理的系統開支

為了在運行時處理異常,程式要記錄大量的資訊。無論執行到什麼地方,程式都必須能夠識別出如果在此處拋出異常的話,將要被釋放哪一個對象;程式必須知道每一個進入點,以便從try塊中退出;對於每一個try塊,他們都必須跟蹤與其相關的catch子句以及這些catch子句能夠捕獲的異常類型。這種資訊的記錄不是沒有代價的。確保程式滿足異常規格不需要運行時的比較(runtime

Win32下兩種用於C++的線程同步類(上)

線程同步是多線程程式設計的核心內容,它的目的是正確處理多線程並發時的各種問題,例如線程的等待、多個線程訪問同一資料時的互斥,防死結等。Win32提供多種核心對象和手段用於線程同步,如互斥量、訊號量、事件、臨界區等。所不同的是,互斥量、訊號量、事件都是Windows的核心對象,當程式對這些對象進行控制時會自動轉換到核心態,而臨界區本身不是核心對象,它是工作在使用者態的。我們知道從使用者態轉換到核心態是需要以時間為代價的,所以如果能在使用者態就簡單解決的問題,就可以不必勞煩核心態了。這裡我要說的是兩

Win32下兩種用於C++的線程同步類(下)

上一篇中我介紹了一種通過封閉Critical

C++箴言:謹慎使用多繼承

觸及 multiple inheritance (MI)(多繼承)的時候,C++ 社區就會鮮明地分裂為兩個基本的陣營。一個陣營認為如果 single inheritance (SI)(單繼承)是有好處的,multiple inheritance(多繼承)一定更有好處。另一個陣營認為 single inheritance(單繼承)有好處,但是多繼承引起的麻煩使它得不償失。在本文中,我們的主要目的是理解在 MI 問題上的這兩種看法。首要的事情之一是要承認當將 MI

C++物件版面配置及多態實現探索之虛繼承

下面我們來看虛繼承。首先看看這C020類,它從C010虛繼承:}struct C010{ C010() : c_(0x01) {} void foo() { c_ = 0x02; } char c_;};struct C020 : public virtual C010{ C020() : c_(0x02) {} char c_;};運行如下代碼,查看對象的記憶體布局:PRINT_SIZE_DETAIL(C020)結果為:The size of C020 is 6The detail of C0

C#簡單操作Lotus Notes郵件

前段時間簡單的研究了一下.NET操作Lotus Notes郵件的實現,具體的操作包括郵件的讀取和發送,而且都要包含附件,其間參考了《在 Microsoft .NET 應用程式中使用 IBM Lotus Domino》一文,現在把成果和大家分享一下。本文將分為擷取使用者列表、發送郵件、收取郵件三個部分,並會在文末提供範常式序(Visual Studio 2008)的下載。引用如果想使用.NET操作Lotus,我們可以使用 Lotus Domino Objects 通過 COM 來訪問

More Effective C++:指標與引用的區別

指標與引用看上去完全不同(指標用操作符’*’和’->’,引用使用操作符’.’),但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他對象。你如何決定在什麼時候使用指標,在什麼時候使用引用呢?首先,要認識到在任何情況下都不能用指向空值的引用。一個引用必須總是指向某些對象。因此如果你使用一個變數並讓它指向一個對象,但是該變數在某些時候也可能不指向任何對象,這時你應該把變數聲明為指標,因為這樣你可以賦空值給該變數。相反,

More Effective C++:不使用多態性數組

類繼承的最重要的特性是你可以通過基類指標或引用來操作衍生類別。這樣的指標或引用具有行為的多態性,就好像它們同時具有多種形態。C++允許你通過基類指標和引用來操作衍生類別數組。不過這根本就不是一個特性,因為這樣的代碼根本無法如你所願地那樣運行。假設你有一個類BST(比如是搜尋樹對象)和繼承自BST類的衍生類別BalancedBST:class BST { ... };class BalancedBST: public BST { ...

菜鳥也能搞定C++記憶體流失

背景C++記憶體配置與釋放均由使用者代碼自行控制,靈活的機制有如潘多拉之盒,即讓程式員有了更廣的發揮空間,也產生了代代相傳的記憶體流失問題。對於新手來說,最常犯的錯誤就是new出一個對象而忘記釋放,對於一般小應用程式來說,一點記憶體空間不算什麼。但是當記憶體流失問題出現在需要24小時啟動並執行平台類程式上的時候,將會使系統可用記憶體飛速減少,最後耗盡系統資源,導致系統崩潰。所以學會如何防止並檢查記憶體流失,是一個合格的c++程式員必須具備的能力。但是由於記憶體流失是程式運行並滿足一定條件時才會發

C#進行Visio二次開發之判斷圖紙是否有裝置

判斷Visio圖紙上是否圖紙有裝置(存在圖元), 有兩種方法,一種是通過Window對象的SelectAll方法,在判斷選擇的集合是否不為空白即可,如下:/**//// <summary> /// 判斷是否有對象選定 /// </summary> /// <param name="window"></param> ///

C++之父Bjarne談C++中的STL模板

在1994年,我主要關心的是如何使ISO

保持C/C++程式碼的延展性

   在今天,已有許多的32位應用程式感到,在32位平台上可用的虛擬記憶體受到了一定的限制,對程式開發人員來說,即使是開始關注64位平台時,也不得不維護軟體的32位版本,這就需要一種方法,以使代碼的兩個版本都保持相當的延展性。  

C#下實現空白表單上中文輸入,可以實作類別PS的文字工具

在空白表單上開啟IME,在C#裡的空白視窗是無論如何也是打不開IME.設 置了this.ImeMode= ImeMode.NoControl也是無法開啟IME的錄字視窗.去 Microsoft 開發論壇上問了一些問題.感謝周雪峰版主與Riquel_Dong 版主給的 指點.用了API函數: ImmAssociateContext(IntPtr hWnd, IntPtr hIMC);終 於把IME給調了出來,它的功能是把輸入與指定的視窗進行關聯.代碼如 下:f (m.Msg ==

總頁數: 4314 1 .... 681 682 683 684 685 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.